返回 REST API 中错误 HTTP 方法的代码?
Posted
技术标签:
【中文标题】返回 REST API 中错误 HTTP 方法的代码?【英文标题】:Return code for wrong HTTP method in REST API? 【发布时间】:2015-03-21 02:46:16 【问题描述】:我们的 API 用户可以通过向根 API 地址发送GET
请求来获取 root 文档(集合列表)。如果他发送POST
,我们应该返回一些东西。同样的问题适用于其他资源路径,例如在查询路径等上发送PATCH
。并非所有方法在某些路径上都有意义。
正如我从 HTTP RFC 中看到的,我们应该返回代码 405
: Method not allowed 并返回带有允许方法列表的 Allowed
响应标头。
我看到了,例如GitHub API 返回 404
:Not found 在我上面解释的情况下(发送 POST
到 root)。
正确的反应是什么? 404
还是 405
?我看到405
对开发人员更友好,所以有什么理由不使用它吗?
【问题讨论】:
【参考方案1】:根据 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?
【讨论】:
一个错误的访问令牌肯定会返回403
"Bad credentials"。以上是关于返回 REST API 中错误 HTTP 方法的代码?的主要内容,如果未能解决你的问题,请参考以下文章
如果 REST API 方法失败,我应该返回 200、400 还是 500 HTTP 状态消息?