我已经开始使用IHttpActionResult
属性来装饰我的[ResponseType]
方法,目的是让消费者更容易知道如何处理响应。
这对GET来说很有意义,因为我可能想要对返回的数据做些什么
但[ResponseType]
是否对PUT或POST请求有任何意义,PUT或POST请求不会返回任何数据,只有成功代码?
e.g。
[HttpPut]
[Route("Contact/{contactId:int}/name", Name = "UpdateContactName")]
[ResponseType(typeof(?????))] // <- what should I put here? do I even need it at all?
public IHttpActionResult UpdateName(int contactId, [FromBody] string name)
{
//...
return StatusCode(HttpStatusCode.Accepted);
}
答案 0 :(得分:10)
事实证明,[ResponseType]
确实对无法返回数据的控制器方法有意义。
您可以使用void
类型来确保WebApi帮助文件不显示&#34;样本不可用&#34;这些方法的消息。
即
[ResponseType(typeof(void))]
答案 1 :(得分:1)
我可能会遗漏一些东西,但我个人认为以下方法更加优雅和内容丰富
[HttpPut]
public IHttpActionResult Approve(long id)
{
if (!ModelState.IsValid)
{
return BadRequest();
}
// .....
// .....
bool success = false;// this is just a flag to indicate operation progress
// Do Update...
return Ok(sucess);
}
不是让控制器不返回任何数据,而是根据操作的成功或失败,返回&#39; Ok(true)。