哪个 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 服务器错误。根据错误的类型,您可以选择使用"503 服务不可用"或"501 未实现",但在更通用的情况下选择"500 内部服务器错误"(GET 或 POST 无关紧要)。
您可以选择提供自定义响应正文,以区分已处理的错误消息和未处理的错误消息。
有一个可用状态代码的列表。通常,如果请求有效,您将收到状态代码 200。如果找不到资源,您将获得 404。所有服务器端错误都将导致 500。如果您打算区分服务器端错误,则必须手动捕获它们并返回具有不同状态代码的响应。注意:状态代码 500 是最糟糕的。例如,不应使用它在验证失败时返回错误消息。在这种情况下,请使用不同的状态代码。
相关文章:
- AngularJS$http重定向状态代码
- AJAX错误状态代码500内部服务器错误
- 如何将JavaScript自动POST的状态代码获取到另一个域
- Http状态代码工厂AngularJs
- 成功ajax:如果是200状态代码,则运行函数else另一个函数
- 运行函数ifsuccess($.ajax)有200个状态代码
- JavaScript和Html代码来运行所有类型的视频并获取状态
- XMLHttpRequest 对象状态代码为 0
- URL中包含特殊字符的HTTP状态代码
- 如何使用scalajs-angular获取请求的http状态代码
- Internet Explorer:可以't访问IFrame内容,除非状态代码为200
- 如何侦听跨域映像请求上的任何301/302重定向状态代码
- 从一个正在运行的PHP代码中,了解如何更新DIV标记中的状态
- 如果 angularjs 中的状态代码为 403,请注销
- 如何让反应路由器响应 404 状态代码
- HTTP 状态代码 - Backbone.js 和 Jquery
- 如何使用 iframe.src 下载文件时获取返回状态代码
- 接收错误代码 3,http_status空,正文空,异常状态 2
- 预检响应具有无效的 HTTP 状态代码 405 - AngularJS + Spring MVC
- 当处于活动状态时,我如何删除文本修饰.我有以下代码,但链接带有下划线