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

HTTP头状态是否与RESTful调用的正文状态匹配

卢黎明
2023-03-14

构建RESTful web服务endpoint,并考虑HTTP头状态与响应正文中找到的状态的最佳实践是什么。它们应该总是匹配的,还是可以是不同的?例如,在一个坏请求的情况下,实际上是我们的应用层对有效负载进行解析和处理。因此,在请求发送到应用层的情况下,HTTP报头是否显示200(表示传输没有问题),而响应体是否包含400(表示错误的请求)?还是他们应该一直匹配?头部和身体都有400?

多谢了。

共有1个答案

景轶
2023-03-14

一般来说,一以贯之是一种好的做法。因此,如果您打算在JSON正文中返回HTTP状态代码,那么它应该与HTTP状态代码相同。

如果要添加更多有关应用程序错误的详细信息。JSON-API标准为JSON错误体定义了一些字段,例如:

  • 代码:应用程序特定的错误代码,表示为字符串值。例如,HTTP 400状态代码可能有不同的代码。
  • 标题:对问题的简短、可读的摘要,除非出于本地化的目的,该摘要不应因问题的发生而改变。
  • 详细信息:特定于该问题发生的人类可读的解释。与title一样,该字段的值可以本地化。
GET /artists/:artist_id/songs/:id
  1. 找不到艺术家时
  2. 找不到歌曲时

对于这两种情况,您都将返回一个HTTP404状态代码。但是,在json主体中,可以添加更多的细节:

  • 找不到艺术家时
    • 代码:10
    • 标题:找不到艺术家
    • 详细信息:id为{artist_id}的艺术家不存在
      null

 类似资料:
  • 主要内容:1 1xx:信息,2 2xx:成功,3 3xx:重定向,4 4xx:客户端错误,5 5xx:服务器错误当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。 HTTP状态码的英文为HTTP Status Code。下面是常见的HTTP状态码:  1xx - 这意味着已收到请求,并且该过程正在继续。 2xx - 这意味着已成功接收,理解并接受了该

  • 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。 HTTP状态码的英文为HTTP Status Code。 下面是常见的HTTP状态码: 200 - 请求成功 301 - 资源(网页等)被永久转移到其它URL 404 - 请求的资源(网页等)不存在

  • HTTP 1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。 这些状态码代表的响应都是信息性的,标示客户应该采取的其他行动。 100-客户端应当继续发送请求 101-切换协议 102-处理将被继续执行

  • 我的资源 index.jsp HTTP状态500-servlet Jersey Web应用程序的servlet.init()引发异常 类型异常报告 servlet Jersey Web应用程序的消息servlet.init()引发异常 Apache Tomcat/8.0.43

  • 好的,我在运行我的应用程序时遇到了这个问题,我相信这是因为版本控制。 秋季开始,我使用Tomcat 9.0.4。我使用最新的JavaSDK。 现在,我使用的是Spring版本5.0.2。 这是我的pom。xml: 这是我的web.xml: 这是我的调度器servlet。xml: 现在,我想提一件事:看看那些?我不确定这是否正确。为什么?这就是我在输出中得到的错误: 现在,我知道这是一大段文字,你可

  • HTTP 请求和 HTTP 响应消息的格式是类似的,结构如下: 初始状态行 + 回车换行符(回车+换行) 零个或多个标题行+回车换行符 一个空白行,即回车换行符 一个可选的消息主体,比如文件、查询数据或查询输出 例如,服务器的响应头如下所示: HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Blan