限制集合的HTTP状态码是什么?

6

我有一个Restful服务,其中一个集合受到限制(出于UX原因)。在这种情况下,它的上限为25个项目。如果超过了这个限制,必须先删除资源才能添加更多。例如,如果客户端提交:

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

并且在stuff中有不到25件事情:

200 OK
如果“stuff”中的物品数量大于25,则执行以下操作:
???

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

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

200 OK

这种情况下,最好的代码是什么?是直接返回400吗?还是409 CONFLICT?还是429?似乎都不太合适。。


2
409冲突对我来说似乎是正确的,因为(a)它是一个资源状态问题,(b)它是用户可解决的。 - Alohci
1个回答

9
使用 409 状态码。根据 httpbis 第 7.5.8 节: "由于与资源当前状态的冲突,请求无法完成。只有在预计用户可能能够解决冲突并重新提交请求的情况下才允许使用此代码。有效载荷应包含足够信息,以便用户识别冲突的来源。" 在您的情况下,资源是由 http://somesite.com/api/v2/stuff 标识的资源,由于其当前状态已达到最大值,POST 请求无法完成。在响应中,为用户提供足够的信息(最好是链接),以便删除现有成员,增加限制或采取其他操作。然后他们可以重新提交原始请求。

是的,这个描述很恰当,我认为这可能是最好的选择。“冲突”听起来有点太粗糙了 =| - Scott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,