Return REST 中错误的 HTTP 方法的代码 API?

Return code for wrong HTTP method in REST API?

我们的 API 用户可以通过向根 API 发送 GET 请求来获取 root 文档(collection 列表)地址。如果他发送 POST,我们应该 return 一些东西。同样的问题适用于其他资源路径,例如在查询路径等上发送 PATCH。并非所有方法在某些路径上都有意义。

正如我从 HTTP RFC 中看到的那样,我们应该 return 代码 405: Method not allowed 并发回 Allowed 响应header 包含允许的方法列表。

我明白了,例如GitHub API returns 404: Not found 在我上面解释的情况下(发送 POST 到 root) .

正确的回应是什么? 404 还是 405?我看到405多了developer-friendly,有什么理由不用呢?

根据 HTTP 规范和 REST 指南,在这种情况下的预期行为是 return 405 Method Not Allowed资源在那里,因为 GET 有效,所以 404 Not Found 会造成混淆。

我不熟悉 GitHub API 但在某些情况下我看到 403 Forbidden 它也 returns 404 Not Found:

Requests that require authentication will return 404 Not Found, instead of 403 Forbidden, in some places. This is to prevent the accidental leakage of private repositories to unauthorized users.

也许根地址上的行为是通常处理此类情况的更大机制的一部分,谁知道呢。 Maybe you could ask?