休息Api:404,422或500?

问题描述 投票:0回答:1

让我们假设我们有两个对象。 postcommentpost有n-comments。

如果我想得到(或改变)commentpost,那么我也可以做一个 [DELETE, GET, PATCH] posts/{postId}/comments/{commentId} 代替 [DELETE, GET, PATCH] GET comments/{commentId}

但是......什么时候服务器注意到,给定的qazxsw poi存在,但有另一个qazxsw poi作为客户端请求说?那是......

  1. 404(未找到) - 因为完整路径不存在。
  2. 422(不可处理的实体) - 因为语法是正确的,但语义不是。
  3. 500(内部服务器错误) - 因为它的意外情况见(commentId)。
http http-error
1个回答
2
投票

这肯定是客户端错误,因此正确的状态代码应该在postId范围内。


当无法找到给定URI的资源表示时,服务器应返回带有https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500状态代码的响应:

4xx

404(未找到)状态代码表示源服务器没有找到目标资源的当前表示,或者不愿意透露存在该目标资源。 [...]


6.5.4. 404 Not Found状态代码用于指示语法上有效但在语义上无效的有效负载。

例如,假设您有一个端点来创建注释,并且有效负载应该包含此注释所属的帖子的标识符:

404

在这种情况下,如果422引用不存在的帖子,服务器应该返回POST /comments HTTP/1.1 Host: example.org Content-Type: application/json { "content": "Awesome post!", "postId": 1 }

© www.soinside.com 2019 - 2024. All rights reserved.