我们的API用户可以通过向根API地址发送GET
请求来获取 root 文档(集合列表)。如果他发送POST
,我们应该返回一些东西。同样的问题适用于其他资源路径,例如在查询路径上发送PATCH
等。并非所有方法在某些路径上都有意义。
我从HTTP RFC看到的是,我们应该返回代码405
:方法不允许并使用允许的方法列表发回Allowed
响应标头。
我看到了,例如GitHub API返回404
:未找到,如上所述(将POST
发送到root)。
什么是正确的回应? 404
或405
?我看到405
更适合开发人员,所以有什么理由不使用它吗?
答案 0 :(得分:26)
根据HTTP规范和REST准则,在这种情况下的预期行为是返回405 Method Not Allowed
。 资源就在那里,因为GET有效,所以404 Not Found
会让人感到困惑。
我不熟悉GitHub API,但在某些情况下,我发现403 Forbidden
它也会返回404 Not Found
:
在某些地方,要求身份验证的请求将返回404 Not Found,而不是403 Forbidden。这是为了防止私人存储库意外泄露给未经授权的用户。
根据地址的行为可能是一个更大的机制的一部分,通常处理这种情况,谁知道。 Maybe you could ask?