我有一个Web API应用程序。我应该在端点上发表文章。当我在邮递员中尝试我的API控制器时,我收到错误消息“
请求的资源不支持HTTP'POST'
我是Web API的新手,欢迎任何帮助和建议。
这是我的模型课:
namespace Products.Models
{
public class Prouct
{
public string ProductID { get; set; }
public string ProductName { get; set; }
public string ProductPrice { get; set; }
public string VoucherID { get; set; }
}
}
这是我的控制器类
[RoutePrefix("api/products")]
public class ProductsController : ApiController
{
static HttpClient client = new HttpClient();
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
public string Get(int id)
{
return "value";
}
[Route("products")]
public async Task PostAsync(string ProductID, string ProductName, string ProductPrice,
string VoucherID)
{
Products p = new Products();
p.ProductID = ProductID;
p.ProductName = ProductName;
p.ProductPrice = ProductPrice;
p.VoucherID = VoucherID;
var client = new HttpClient { BaseAddress = new
Uri("http://localhost:51613/") };
var response = await
client.PostAsJsonAsync("api/products",
p);
if (response.IsSuccessStatusCode)
{
}
public void Put(int id, [FromBody]string value)
{
}
public void Delete(int id)
{
}
答案 0 :(得分:0)
您需要在HttpPost
方法上指定PostAsync
。默认情况下为[HttpGet]
。
[HttpPost]
[Route("products")]
public async Task PostAsync(string ProductID, string ProductName, string ProductPrice, string VoucherID)
{
// implementation
}
答案 1 :(得分:0)
好像您陷入了循环。为什么PostAsync方法在被调用后会自行调用?这将导致无休止的请求循环。
var client = new HttpClient { BaseAddress = new Uri("http://localhost:51613/") };
这与[HttpPost]属性是必需的事实无关。
答案 2 :(得分:0)
请注意您应该使用[FromBody]。同样在Postman(附有图像)中,您必须选择产品json,类型为JSON(application.json)的“原始”数据。
[HttpPost]
[Route("products")]
public async Task PostAsync([FromBody] Products p)
{
var client = new HttpClient
{
BaseAddress = new
Uri("http://localhost:51613/")
};
var response = await
client.PostAsJsonAsync("api/products",
p);
if (response.IsSuccessStatusCode)
{
}
}