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

时间:2015-01-22 10:34:05

标签: api rest http

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

我从HTTP RFC看到的是,我们应该返回代码405方法不允许并使用允许的方法列表发回Allowed响应标头。

我看到了,例如GitHub API返回404未找到,如上所述(将POST发送到root)。

什么是正确的回应? 404405?我看到405更适合开发人员,所以有什么理由不使用它吗?

1 个答案:

答案 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