【问题标题】:HTTP status code for limited collection?有限收集的 HTTP 状态代码?
【发布时间】:2012-11-19 19:39:59
【问题描述】:

我有一个安静的服务,其中一个集合是有限的(出于用户体验的原因)。在这种情况下,它有 25 个项目的上限。如果超过,则必须先删除资源,然后才能添加更多资源。例如,如果客户提交:

POST http://somesite.com/api/v2/stuff
{"cool":"stuff"}

东西里有

200 OK

如果有 > 25 个东西:

???

DELETE http://somesite.com/api/v2/stuff/:id

POST http://somesite.com/api/v2/stuff
{"cool":"stuff"}

200 OK

什么是最好的代码?直400? 409冲突? 429?没有一个似乎完全正确..

【问题讨论】:

  • 409 冲突对我来说似乎是正确的,因为 (a) 这是一个资源状态问题,并且 (b) 它是用户可解决的。

标签: api http rest http-status-codes


【解决方案1】:

使用 409。来自httpbis section 7.5.8

"由于与当前的冲突,请求无法完成 资源的状态。仅在以下情况下才允许使用此代码 预计用户可能能够解决冲突,并且 重新提交请求。有效载荷应该包含足够的信息 以便用户识别冲突的来源。”

在您的情况下,资源是由http://somesite.com/api/v2/stuff 标识的资源,并且POST 请求由于与其当前状态冲突(即它已经被最大化)而无法完成。在您的回复中,为用户提供足够的信息(最好是链接)以删除现有成员之一、超出限制或采取其他措施。然后他们可以重新提交原始请求。

【讨论】:

  • 是的,描述很合适,我认为这可能是最好的。冲突听起来有点太……粗暴=|
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 2019-04-02
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
相关资源
最近更新 更多