当前位置: 首页 > 知识库问答 >
问题:

web - Http 响应码的问题应该怎么选择?

关翰
2023-10-24

一般来说 如果业务逻辑失败 比如登录的账号或者密码错误 那么 http 应该响应 500 还是200
那么其他业务情况呢 比如 输入的参数有误 或者预期有数据但实际没数据 应该用什么样的响应码?

共有2个答案

赵献
2023-10-24

我比较倾向于把业务的错误融合到HTTP状态码里面。

比如帐号错误密码错误,应该返回401。
程序上的异常(影响到前端流程、数据库连接异常、文件权限异常),要返回500。
其他业务逻辑上的问题、异常,和正常情况一样,都返回200。
参数有误,应该要返回400。

在响应体里面,也需要有响应码,这个响应码就和业务逻辑有关。
比如会返回这样的响应码: 1001 密码错误 1002 验证码错误 1003 缺少XX必传参 1003 XXX不存在


好处是 加了HTTP状态码之后,就可以在网关日志里面根据HTTP状态码统计接口异常情况。
坏处是 前端除了需要判断响应体里面的状态码,还需要判断HTTP状态码。

边银龙
2023-10-24

对于这个问题,首先需要明确HTTP响应码的含义和用途。HTTP响应码是由服务器返回给客户端的三位数字代码,用于表示HTTP请求的处理结果。

当业务逻辑失败,例如登录的账号或密码错误时,通常应该返回HTTP 401 状态码。401表示客户端请求需要身份验证,而用户提供的认证信息不正确或无效。

如果输入的参数有误,或者预期有数据但实际没有数据,应该根据具体情况选择适当的HTTP响应码。一般来说,如果错误是由客户端输入引起的,可以使用HTTP 400 状态码。400表示客户端发送的请求有语法错误,服务器无法理解或无法处理。如果错误是由服务器端逻辑引起的,可以使用HTTP 500 状态码。500表示服务器端出现错误,导致无法完成客户端的请求。

因此,根据不同的业务情况,可以选择不同的HTTP响应码来返回给客户端。正确的响应码选择可以帮助客户端更好地理解请求的处理结果和错误原因,从而进行相应的处理和改进。

 类似资料:
  • 使用Java进行一个简单的“delivery_quotes”调用进行测试,返回HTTP响应代码-403 我正在使用的客户ID和测试API密钥是正确的。任何帮助!

  • 记录的Blazemeter脚本在JMeter中不工作,出现以下错误消息。 响应代码:非HTTP响应代码:java.net。SocketException响应消息:非HTTP响应消息:软件导致连接中止:recv失败

  • 我正在jMeter中执行负载测试,其中有两个线程组,每个线程组都有50个用户,上升周期为60秒。使用Blazemeter,我记录了一个填写和提交表格的会话,然后稍微修改了一下。其中一组是使用POST方法登录,然后提交表单,另一组是匿名用户填写的。当我运行测试时,我遇到了错误: 响应代码:非HTTP响应代码:org.apache.HTTP。ConnectionClosedException响应消息:

  • 我想创建一些基于Spring的REST服务示例。我想得到基于Foo对象的JSON,但是当我尝试使用curl发送请求时,它显示406错误:“此请求标识的资源仅能够根据请求“接受”标题生成具有不可接受特征的响应。”这是我的代码: RestControl.java 福。爪哇: 网状物xml: mvc调度程序servlet。xml: Upd2:org。科德豪斯。杰克逊制图器asl 1.9。13

  • 我正在尝试用JMeter学习负载测试(非常新)。使用该教程在JMeter网站和另一个youtube教程上构建一个Web测试计划,我创建了一个HTTP GET请求来访问www.google.com/,但是我得到了以下结果: 这是我的要求:链接到图像,因为我还没有10个声誉 环顾四周,其他人正在遇到此问题,但他们的问题是在 250 个用户之后: 响应代码: 非 HTTP 响应代码: java.net.