我有一个宁静的服务,其中一个集合是有限的(出于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?没有一个看起来很正确..
答案 0 :(得分:8)
使用409.来自httpbis section 7.5.8:
“由于与当前的冲突,请求无法完成 资源的状态。此代码仅在以下情况下允许 预计用户可能能够解决冲突 重新提交请求。有效载荷应该包含足够的信息 让用户识别冲突的根源。“
在您的情况下,资源是由http://somesite.com/api/v2/stuff
标识的资源,并且POST
请求由于与其当前状态(即已经超出)的冲突而无法完成。在您的回复中,为用户提供足够的信息(最好是链接)以删除其中一个现有成员,超出限制或采取其他一些操作。然后他们可以重新提交原始请求。