6

我有一个安静的服务,其中一个集合是有限的(出于用户体验的原因)。在这种情况下,它有 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?没有一个似乎完全正确..

4

1 回答 1

8

使用 409。来自httpbis 第 7.5.8 节

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

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

于 2012-11-19T22:53:19.510 回答