繁体   English   中英

哪个Http错误/状态代码合适?

[英]Which Http error/status code is the appropriate?

我已经仔细阅读了所有HTTP错误/状态代码,但仍不清楚在以下情况下哪种方法适合返回:

  • 该请求是Ajax请求,因此错误情况的处理取决于客户端javascript代码,最好会给出通知。
  • 在服务器端发生意外错误(例如,数据库操作失败),但是在服务器端处理了异常,并在此创建了适当的错误消息(作为字符串)。

“意外错误”表示HTTP 500,但是我想区分真实服务器内部错误(和未处理的错误)和已处理的用例(如上所述)。

哪个Http错误/状态代码合适? 请求查询(使用GET)还是进行某些更新(使用POST)是否重要?

您描述的两种情况都是服务器错误。 不管是数据库操作失败还是服务器端代码未处理错误(未处理的错误)。 因此,从前端的角度来看,发生了服务器错误(500错误状态)。

现在,将自定义应用程序错误与未处理的错误区分开来,归结为您正在使用哪种服务器端技术。 您可以使用一些仅处理的应用程序错误才具有的信息来修饰(添加属性)错误对象。 因此,在前端,如果存在该属性,则是已知的服务器错误。

//500 error - unknown model
{ status: 500, exception: "my unknown error." }

//500 error - known model
{ status: 500, exception: "DB script has failed.", errorCode: 001 }

调用是GET还是POST都没关系。 两种方法都可以返回相同的http状态代码。

适当的响应是5xx Server Error 根据错误的类型,您可以选择使用“ 503 Service Unavailable”或“未实现501”,但在更一般的情况下,请选择“ 500 Internal Server Error”(GET或POST无关紧要)。

您可以选择提供一个自定义响应正文,以区分已处理的错误消息和未处理的错误消息。

有可用状态代码的列表 通常,如果请求有效,您将收到状态码200。如果找不到资源,则会得到404。所有服务器端错误都将导致500。如果您打算区分服务器端错误,则必须手动捕获它们并返回带有不同状态代码的响应。 注意:状态码500是其中最差的。 例如,如果验证失败,则不应使用它返回错误消息。 在这种情况下,请使用其他状态代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM