哪个ResponseType应该用于PUT或POST请求的IHttpActionResult?

时间:2014-03-26 16:01:29

标签: c# asp.net-web-api

我已经开始使用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);
}

2 个答案:

答案 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)。