如果传递params无效,返回什么http状态代码?

时间:2016-05-04 12:54:08

标签: asp.net-web-api asp.net-web-api2

我在web api项目上工作。

这是行动方法:

public async Task<IHttpActionResult> GetDamageEvents(int siteObjectId, int statusId)
{
    try 
    {
        if (siteObjectId == null || siteObjectId == 0) return (what status?)
        if (statusId == null || statusId == 0) return (what status?)

        //some logic


        return Ok(some result);
    }
    catch (Exception)
    {
        return BadRequest();
    }
}

正如您在上面的方法中所看到的,我有两个参数siteObjectId和statusId,

如果这些参数为null或0,我需要返回客户端相应的状态代码。

它应该是什么状态代码?我认为BadRequest状态代码太笼统了。

1 个答案:

答案 0 :(得分:3)

很少有开发人员会考虑使用状态400错误请求:

  

由于语法格式错误,服务器无法理解该请求。客户不应该在没有修改的情况下重复请求。

另一方面,

开发商状态422似乎最合适

  

422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码不合适),并且请求实体的语法是正确的(因此400 (错误请求)状态代码不合适)但无法处理包含的指令。例如,如果XML请求主体包含格式正确(即语法正确)但语义错误的XML指令,则可能会出现此错误情况。

您将使用哪一个,由您决定

请查看此链接,请http://www.bennadel.com/blog/2434-http-status-codes-for-invalid-data-400-vs-422.htm