在宗教层面上,它是RESTafarian的狂热支持者。
决定HTTP状态码的经验法则是这个图表或类似资源。
GET /api/documents/1
-401
用户未登录GET /api/documents/1
-200
用户有权限GET /api/documents/1
-403
用户没有权限DELETE /api/documents/1
-204
用户有权限DELETE /api/documents/1
-403
用户没有权限GET /api/documents/2
-404
用户权限无关紧要,资源不存在DELETE /api/documents/2
-404
用户权限无关紧要,资源不存在DELETE /api/documents/1
-404
用户有权限,资源已被删除DELETE /api/documents/1
-404
用户没有权限,资源已被删除
目标:
- 使用中保持一致性
- 不要通过错误泄露私人信息
- 适当地使用客户端或中间层缓存的状态码
- 尽早失败,将查找最小化
在这种情况下,有很多不同的状态码可供选择(404、403、410、405),在我的情况下,如果资源不属于您,则对现有资源使用403以不清除缓存,并对所有不存在的资源使用404,以告诉客户端清除该数据。
但我不喜欢在资源不属于您的情况下从403切换到404。
我很想听听其他人如何解决这个用例,或者总体上您认为适合发送所有无效的DELETE调用的状态码是什么,因为我认为这是最难简洁的之一。
(互联网上关于REST的许多讨论和答案都只是“抛出400错误请求,反正没有人在乎”,我没有需要快速修复或实用主义黑客的问题。谢谢)