我想知道当服务器端发生错误时返回HTTP 200 OK
是否正确(错误详细信息将包含在响应主体中)。
例子:
httpget
这是不是正确的行为?我们是否应该将状态代码更改为200以外的值?
即使我想以HTTP代码的形式返回业务逻辑错误,也没有可接受的HTTP错误代码,而不是使用HTTP 200,因为它会误报实际错误。
因此,HTTP 200将有助于解决业务逻辑错误。但是HTTP错误代码涵盖的所有错误都应该使用它们。
基本上,HTTP 200意味着什么服务器正确处理用户请求(如果飞机上没有座位,没关系,因为用户请求被正确处理,它甚至可以返回飞机上可用的座位数,所以不会有业务逻辑错误,或者业务逻辑可能在客户端。业务逻辑错误是抽象意义,但HTTP错误更明确)。
HTTP状态代码表示有关HTTP协议的信息<代码>HTTP 200表示HTTP级别的传输正常(即请求在技术上正常,服务器能够正确响应)。有关所有代码及其含义的列表,请参见此wiki页面。
HTTP 200与您的“业务代码”的成败无关。在您的示例中,HTTP 200
是一个可接受的状态,表明您的业务代码错误消息已成功传输,前提是没有技术问题阻止业务逻辑正常运行。
或者,如果服务器上发生了技术问题或无法恢复的问题,您可以让服务器用HTTP 5xx响应。或者HTTP 4xx
,如果传入的请求有问题(例如错误的参数,意外的HTTP方法...)同样,这些都表示技术错误,而HTTP 200表示没有技术错误,但不能保证业务逻辑错误。
总结一下:是的,在超文本传输协议响应中发送错误消息(针对非技术问题)以及HTTP状态200是有效的。这是否适用于你的情况取决于你。例如,如果客户端请求不存在的文件,则更像是404
。如果服务器上存在错误配置,则可能是500
。如果客户要求在预订满的飞机上获得一个座位,那将是200
,您的“实现”将决定如何识别/处理这一点(例如JSON块与{"预订":"失败"}
)
不,用错误体发送200是非常不正确的
HTTP是一种应用程序协议。200表示响应包含表示所请求资源的状态的有效负载。错误消息通常不是该资源的表示。
如果在处理GET时出现问题,正确的状态代码是4xx(“你搞砸了”)或5xx(“我搞砸了”)。
问题内容: 我通过jQuery AJAX将一些数据发布到PHP脚本中,并且一切正常执行,但是返回了404错误。在我的Firebug控制台中,PHP脚本的响应是正确的。我不了解该脚本如何响应,它仍然会引发404错误。jQuery的“错误”回调方法将触发,而“成功”方法则不会触发。 PHP脚本执行的所有语句都能正常工作,因为我可以看到数据库正在更新等。 我在Dreamhost托管的WordPress
我一直试图用CakePHP 1.3实现ajax登录。我有一个简单的用户名/通行证登录弹出。 以下是我的视图/元素/登录。ctp: 以下是在我的控制器控制器/users_controller.php 上述控制器的视图位于视图/用户/ajax_login.ctp只有这一行: My Ajax具有以下代码: 现在,一切似乎都是完美的工作,然而,这总是失败到“错误”回调,我不知道为什么。我读过下面所有关于s
我想在Spring Boot Controller方法中返回一条没有@ResponseBody注释的纯文本消息。 通常,当我返回一个字符串时,会出现一个错误。(实际上,它会查找html文件。) 当我使用此代码时,这将返回一个错误 错误解决模板[这是一个纯文本],模板可能不存在或可能无法访问任何配置的模板解析程序org.thymeleaf.exceptions.TemplateInputExc001
我想知道我是否以正确的方式编写了泽西客户端代码。 登录页面应该在输入正确的用户名和密码后重定向到主页,服务器端返回一个空字符串()。如果其中一个不正确,服务器端代码返回。 页面功能运行良好,但当我使用正确的用户名和密码对使用客户端代码进行测试时,它返回,响应返回200OK。下面是我的客户端代码。 我怀疑用户名和密码没有按HTML文件要求的正确输入位置提交。下面是我的HTML文件块。
我正在制作一个简单的Rest服务,它必须将JSON请求中的数据添加到数据库(MongoDB)中。当我向服务发出请求时出现问题,服务器会出现以下错误: Controller@0.0.0start C:\users\Fernando\Google Drive\tcc_Fernando_Felipe\Controller\Controller节点./bin/www {[Error:找不到模块“../bu
我正在尝试对远程服务器进行api调用,最初,我遇到以下错误: