在构建RESTful API并且用户提供不存在的资源ID时,您应该返回404 Not Found还是400 Bad Request.
例如:
https://api.domain.com/v1/resource/foobar
Run Code Online (Sandbox Code Playgroud)
凡foobar的不存在.
Man*_*noj 36
如果资源不存在我将返回404(意味着url路径错误)并且只有在使用某些无效数据(@PathParam)进行其余调用时才会返回400,例如
https://api.domain.com/v1/profile/test @ email:这里我试图获取电子邮件ID的个人资料,但电子邮件本身是错误的,所以我将返回400.
https://api.domain.com/v1/profile1111/test@email .com将返回404,因为url路径无效.
Rud*_*udy 16
应该是404(未找到).如果由于语法错误而无法满足请求,则使用400,但是对于您的情况,语法是正确的,但是没有资源foobar.
如果用户使用不存在的API,则可以使用400,如下所示:
https://api.domain.com/v1/nonexistAPI/xyz/xyz
Run Code Online (Sandbox Code Playgroud)
您还可以参考此REST API设计博客,该博客告诉您如何设计REST错误代码.
404 Not Found我认为是正确的答案,400更多的是关于请求的主体而不是资源标识符,所以例如你可以通过验证错误发送它.
这是有效的要求吗?可以存在资源的id吗?它是否格式化为正确的ID?它在语法上是否正确?等等.如果是这样,你可以使用,404 Not Found.否则400 Bad Request更合适.
小智 6
根据 RFC ( https://tools.ietf.org/html/rfc2616#section-10.4 ) API 应该返回 404 当
“服务器没有找到与请求 URI 匹配的任何内容”,
这是你的例子。
400 将是找到资源时,但请求本身格式错误。
例如:我。 https://api.domain.com/v1/resource/foobar
foobar 不存在的地方应该返回 404
ii.
https://api.domain.com/v1/resource/foobar
其中 foobar 确实存在,但请求是错误的(例如{age:"NOTANINTEGER"},astring而不是 an int),它应该返回 400。
希望我能帮上忙。
| 归档时间: |
|
| 查看次数: |
32739 次 |
| 最近记录: |