2012-11-19 47 views
6

Tôi có dịch vụ an toàn trong đó một trong các bộ sưu tập bị giới hạn (vì lý do UX). Trong trường hợp này, nó có một nắp gồm 25 mục. Nếu đó là vượt quá tài nguyên phải được xóa trước khi có thể thêm nhiều hơn. Ví dụ nếu một khách hàng nộp:Mã trạng thái HTTP cho bộ sưu tập hạn chế?

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

và có < 25 điều trong thứ:

200 OK 

nếu> 25 điều trong thứ:

??? 

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

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

200 OK 

mã tốt nhất là gì cho điều này? Thẳng 400? 409 CONFLICT? 429? Không có vẻ khá đúng ..

+2

409 Xung đột có vẻ phù hợp với tôi, bởi vì (a) đó là vấn đề trạng thái tài nguyên và (b) người dùng có thể giải quyết được. – Alohci

Trả lời

8

Sử dụng 409. Từ httpbis section 7.5.8:.

"Yêu cầu không thể hoàn tất do mâu thuẫn với tình trạng hiện thời của tài nguyên Mã này chỉ được phép trong các tình huống mà dự kiến ​​người dùng có thể giải quyết xung đột và gửi lại yêu cầu. Tải trọng NÊN bao gồm đủ thông tin để người dùng nhận ra nguồn xung đột. "

Trong trường hợp của bạn, tài nguyên là một trong những xác định bởi http://somesite.com/api/v2/stuff, và yêu cầu POST không thể hoàn thành do một cuộc xung đột với tình trạng hiện thời của nó (mà là nó đã được maxed ra). Trong phản hồi của bạn, hãy cung cấp cho người dùng đủ thông tin (tốt nhất là liên kết) để xóa một trong các thành viên hiện có, tăng giới hạn hoặc thực hiện một số hành động khác. Sau đó, họ có thể gửi lại yêu cầu ban đầu.

+0

Vâng mô tả phù hợp và tôi nghĩ rằng nó có thể là tốt nhất. Xung đột chỉ nghe một chút quá .. thô = | – Scott

Các vấn đề liên quan