我试图创建一个有效的网络服务,但我在标题ALLOW和他的角色版本在不同场景中存在一些问题。
假设GET / resource / 42有效并且标题允许=' GET,PUT'
在以下情况下我应该做些什么:
1)如果找不到资源(401)?
2)如果资源需要auth(401)?
3)如果资源不归用户所有(403)?
4)如果由于缺少api-version头而请求被拒绝(400)?
现在,我有完全相同的问题,如果我更换' GET'通过OPTIONS
也许我缺乏关于HTTP的知识,但我找不到完整而精确的文档。无论如何,谢谢你的帮助。
答案 0 :(得分:0)
这是开始处理响应代码和方法类型的文档的好地方,它是rfc规范:https://tools.ietf.org/html/rfc7231
(完整的HTTP 1.1规范由rfc 7230-7237涵盖)
1)资源未找到 - 通常最好以404返回,但如果您知道故意消失,则可以返回410.
2)资源需要auth - 通常为403,(但授权是一个更大的主题)
3)资源不归用户所有 - 资源所有权未被规范涵盖 - 您的应用程序可能希望为其他人拥有的资源提供服务。响应仅描述了状态。如果您允许提供资源,则可以发送常规的200响应。如果您在识别所有权后明确仅允许资源,并且您发现客户端未识别为所有者,则可以发送403响应,或者如果您还想隐藏资源甚至存在的知识,则可以发送404,它更依赖于您的特定需求。
4)请求被拒绝,因为缺少api-version标头 - 是的400适合这里。您可以在响应中包含一条消息,以解释为什么它被视为错误请求。
对于OPTIONS请求,还有许多其他帖子谈论与特定请求相关的响应代码,例如: https://stackoverflow.com/a/14703357/3417917 200响应可用于传达资源可用的选项,但如果您想传达请求是坏的,您可以发送一般400请求。