有限集合的HTTP状态代码?

时间:2012-11-19 19:39:59

标签: api http rest http-status-codes

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

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

并且有<东西中有25件事:

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?没有一个看起来很正确..

1 个答案:

答案 0 :(得分:8)

使用409.来自httpbis section 7.5.8

  

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

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