我可以使用GET通过http://requestmaker.com/请求API方法,但是当我使用POST或PUT时它返回...
HTTP/1.1 403 Forbidden
这是方法......
[HttpPost]
[Route("api/sales")]
public object Put([FromBody] Sale sale)
{
sale.DateTime = DateTime.Now;
paymentRepository.Insert(sale);
paymentRepository.Save();
return Ok(new { id = sale.SaleId });
}
有什么想法吗?
请求标题是......
POST / admin / api / sales HTTP / 1.1主持人:hello.com接受: / 内容类型:text / html内容长度:17
请求数据......
TourId=3&UserId=1
答案 0 :(得分:1)
它与您的Controller如何路由请求有关。你好像已经定义了这样的东西
默认为GET:
public async Task<IHttpActionResult> MethodName(){
return this.Ok()
}
或
[HttpGet]
public async Task<IHttpActionResult> MethodName(){
return this.Ok()
}
您可以在函数上方定义一些属性:
对于POST:
[HttpPost]
public async Task<IHttpActionResult> MethodNamePost(){
return this.Ok()
}
对于PUT:
[HttpPut]
public async Task<IHttpActionResult> MethodNamePut(){
return this.Ok()
}
像Win一样说:
[HttpPut]
[Route("api/sales")]
public object Put([FromBody] Sale sale)
{
sale.DateTime = DateTime.Now;
paymentRepository.Insert(sale);
paymentRepository.Save();
return new { id = sale.SaleId };
}
我会将回报更改为this.Ok(new {id = sale.SaleId});
。
答案 1 :(得分:1)
您的请求标头错误,应该是
{
"UserId":"1",
"TourID":"3",
}
原因:应用/ JSON
答案 2 :(得分:1)
我还需要将内容类型设置为.args
并将数据设置为application/json
,以便模型绑定起作用。