问题描述
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
。