【问题标题】:What HTTP status code is more appropriate to return from a REST API PUT/PATCH method when a resource is in a state where it can't be updated?当资源处于无法更新的状态时,哪种 HTTP 状态代码更适合从 REST API PUT/PATCH 方法返回?
【发布时间】:2020-03-05 03:37:33
【问题描述】:

假设您有一个处于“已完成”状态的资源并且任何人都不允许更新它(全部或部分),如果有人尝试更新它,返回的正确 HTTP 状态代码应该是什么? 400、403、409 还是其他?

【问题讨论】:

    标签: rest patch put http-status-codes


    【解决方案1】:

    405 Method Not Allowed 是一个有趣的可能性

    405 (Method Not Allowed) 状态码表示请求行中收到的方法是源服务器已知的,但目标资源不支持。源服务器必须在 405 响应中生成一个 Allow 标头字段,其中包含目标资源当前支持的方法列表。

    “当前支持的方法”意味着资源的允许方法集可以随着时间的推移而发展。所以我认为这段代码对于处于不支持 PUT/PATCH 状态的资源来说是令人满意的。

    403 Forbidden 也是一个令人满意的选择。

    403(Forbidden)状态码表示服务器理解请求但拒绝授权。

    【讨论】:

    • 我可能会使用 409(冲突)The request could not be completed due to a conflict with the current state of the target resource,它更好地描述了我的情况 + 我已经在使用 403 进行授权,更愿意区分它
    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 2014-02-08
    • 2011-04-02
    相关资源
    最近更新 更多