api - REST API 中错误 HTTP 方法的返回代码?

标签 api rest http

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

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

我看到了,例如GitHub API 返回 404:Not found 在我上面解释的情况下(发送 POST 到 root)。

什么是正确的回应? 404 还是 405?我发现 405 对开发人员更友好,所以有什么理由不使用它吗?

最佳答案

在这种情况下,根据 HTTP 规范和 REST 指南,预期的行为是返回 405 Method Not Allowed资源就在那里,因为 GET 有效,所以 404 Not Found 会令人困惑。

我不熟悉 GitHub API但在某些情况下,我看到对于 403 Forbidden,它还会返回 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

关于api - REST API 中错误 HTTP 方法的返回代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28086582/

相关文章:

php - 如何调试仅在(谷歌)机器人请求页面时发生的问题?

java - Blogger JSON API 添加帖子

node.js - 使用搜索参数快速路由 GET

codeigniter - 使用 CodeIgniter 的 Rest Server 扩展设置授权级别

javascript - 具有内容类型文本/计划的 ionic native HTTP 调用?

java - 为浏览器提供文件下载的输入流

c++ - sockaddr、sockaddr_in 和 sockaddr_in6 有什么区别?

python - 如何使用python从facebook获取信息?

Python Twitter 工具 - 将多个用户添加到列表失败 (lists.members.create_all)

rest - angularjs get 请求在切换到 SSL 后被取消