【问题标题】:405 Method Not Allowed for DELETE405 方法不允许删除
【发布时间】:2019-05-29 02:55:56
【问题描述】:

当我尝试 DELETE 而不传递需要删除的资源 ID 时,我得到一个“405 Method Not Allowed”。这是我的 URL

http://localhost:8080/api/vendors/delete/1234/

理想情况下,我应该在 URL 末尾给出 ID,例如:

http://localhost:8080/api/vendors/delete/1234/{id}

我确信它应该是 405,但我的 QA 团队不这么认为。他们说应该是 400。有人可以向我指出任何明确指定在这种情况下应该使用什么 HTTP 代码的资源。

【问题讨论】:

  • 如果您使用不同方法的端点,那么 405 是正确的。如果您没有使用其他方法的端点,那么它应该是 404。

标签: java http postman http-delete


【解决方案1】:
  1. 对于您的主要问题,如果 methodDELETE 并且路径 /api/vendors/delete/1234/ 对其他方法有效但对 DELETE 无效,则 405 Method Not Allowed ("A request method is不支持请求的资源”)是正确的,因为该路径中有一个“资源”不支持删除,例如它可能支持GET 检索供应商列表。

    如果那里没有资源,即方法无关紧要,那么404 Not Found(“找不到请求的资源”)将是正确的响应。

  2. 如果方法是DELETE,而不是GETPUTPOST 或其他任何方法,则路径中不需要.../delete/...

  3. 如果您尝试删除供应商 1234,则路径应为 http://localhost:8080/api/vendor/1234,方法应为 DELETE。操作处理程序应在声明中使用/api/vendor/{id}

【讨论】:

  • 啊,我正在寻找的答案。实际上,您的第三点挽救了局面。一旦我摆脱了 URL 中的“删除”,我会看到一个 404 请求,该请求在 URL 中没有 {id}。这是预期的......非常感谢安德烈亚斯
【解决方案2】:

在我看来,404 Not Found 或 400 Bad Request 是一个不错的选择。 也请参考这个答案 HTTP Status Codes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-21
    • 2013-12-25
    • 2014-12-29
    • 2018-01-25
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多