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

本文关键字:POST 请求 IHttpActionResult PUT ResponseType 用于 哪个 | 更新日期: 2023-09-27 17:54:07

我已经开始用[ResponseType]属性装饰我的IHttpActionResult方法,目的是让消费者更容易知道如何处理响应。

这对于GET来说是有意义的,因为我可能需要对返回的数据做一些事情。
但是[ResponseType]是否对PUT或POST请求有任何意义,这些请求不返回任何数据,只是成功代码?

[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);
}

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

事实证明,[ResponseType] 确实对不返回数据的控制器方法有意义。

您可以使用void类型来确保WebApi帮助文件不会为这些方法显示"sample not available"消息。

[ResponseType(typeof(void))]

我可能错过了一些东西,但我个人认为下面的方法更优雅,更有用

[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);
}

而不是有一个不返回任何数据的控制器,我会返回'类似' Ok(true)取决于操作的成功或失败。