这种情况下的 HTTP 状态代码400 或 422

问题描述

我有一些看起来像这样的方法

def some_method
   if params["status"] == "good"
      some action
      render json: {message: "action success"},status: 200
   else 
      render json: {message: "The status is not good,try again later when the status is good"},status: 200
   end
end

你看到当状态不好时,目前我返回 200 状态代码,这种情况下最好的状态代码是什么。是 400 还是 422?

解决方法

422 的描述说:

422(不可处理实体)状态码表示服务器 了解请求实体的内容类型(因此 415(不支持的媒体类型)状态代码不合适),以及 请求实体的语法是正确的(因此是 400(错误请求) 状态代码不合适)但无法处理包含的 说明。

总之,这取决于您的用例细节。

,

当我构建 API 时,我通常使用 422 aka :unprocessable_entity 来处理验证错误。

在我看来,:unprocessable_entity 看起来更明确。

,

Loadd64!

维基百科上提供了 HTTP Status codes 的列表,应该对您非常有帮助。如果这是对用户输入进行身份验证,则正确的状态代码将是 401