如果缺少必需的参数,应该返回什么样的HttpStatusCode?

4

我正在构建一个Web API方法,用于检查该类型的名称是否唯一,并需要确保给出名称参数。返回哪个正确的状态码?

我正在创建一个Web API方法来检查特定类型的名称是否唯一,并需要确保提供名称参数。应该返回什么正确的状态码呢?

public HttpResponseMessage GetIsNameUnique(string name)
{
  if (string.IsNullOrWhiteSpace(layoutName))
  {
      throw new HttpResponseException(new HttpResponseMessage { 
        StatusCode = HttpStatusCode.{What Goes Here?},
         Content = new StringContent("The name is required.")
      });
  }
  // more code here to check....
}

1
请查看此问题:https://dev59.com/i3A75IYBdhLWcg3w49UR - codebox
2个回答

4

如果400错误是由于请求的参数格式不正确而引起的,或者名称参数不在URI中,则可以返回400;如果名称参数在URI中但未找到,则应返回404。


0

编辑:似乎400是最好的答案,而不是我下面提到的412。

在查看此问题评论中codebox提供的链接后,我将选择412,即PreconditionFailed。来自System.Net.HttpStatusCode文件

// Summary:
//     Equivalent to HTTP status 412. System.Net.HttpStatusCode.PreconditionFailed
//     indicates that a condition set for this request failed, and the request cannot
//     be carried out. Conditions are set with conditional request headers like
//     If-Match, If-None-Match, or If-Unmodified-Since.

1
这里没有涉及任何条件请求头。 - CBroe
@CBroe,你认为直接使用400会更好吗? - AlignedDev
似乎是最低公共分母。大多数其他可能适用的4xx状态代码都是针对未满足特定标头字段的期望等问题。我认为,一个400状态码加上解释具体原因的错误消息,甚至带有错误代码的异常格式可能是最好的选择。 - CBroe
感谢您的帮助。看起来人们正在投票将此问题标记为重复,所以我们会看它能持续多久。 - AlignedDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接