有限集合的HTTP状态代码?

Sco*_*ott 6 api rest http http-status-codes

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

POST http://somesite.com/api/v2/stuff
{"cool":"stuff"}
Run Code Online (Sandbox Code Playgroud)

东西中有<25件事:

200 OK
Run Code Online (Sandbox Code Playgroud)

如果> 25件东西:

???

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

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

200 OK
Run Code Online (Sandbox Code Playgroud)

什么是最好的代码?直400?409冲突?429?似乎都不对..

fum*_*chu 8

使用409.来自httpbis第7.5.8节:

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

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