2012-11-26 36 views
14

Giả sử tôi là tài nguyên articles tại /articles.Mã HTTP nào để sử dụng cho một tài khoản con trống trong API REST?

Các bài viết này có thể có các bài viết có liên quan, vì vậy tôi tìm nạp chúng bằng cách GET /articles/{id}/related.

Tôi nên quay lại điều gì là không có bài viết liên quan?

tôi có thể nghĩ:

  • 404 Not Found, có lẽ với một bộ sưu tập trống
  • 204 No Content
  • 200 Found với một bộ sưu tập trống

Bất kỳ lời khuyên? (vui lòng cung cấp đối số)

Nhân tiện, nó có thể áp dụng cho phân trang. Nếu tôi yêu cầu trang 3 của 2, thì trang 3 sẽ trả lại một tập trống, có nên là 404 không?

Trả lời

6

Tôi sẽ không sử dụng 404 - điều đó sẽ cho khách hàng biết rằng "Tôi không thể cho bạn biết liệu có có bất kỳ bài viết được đánh giá lại nào không". Nó sẽ là thích hợp nếu {id} được cho không được công nhận. Những gì bạn muốn là một phản ứng tích cực để nói với khách hàng, có, câu hỏi hay, và đây là danh sách các bài báo liên quan (trống).

204 cũng không tốt vì các lý do liên quan. Nó chỉ định rằng không có câu trả lời là, câu trả lời vẫn khác với câu trả lời ở đó nhưng lại là danh sách trống. Mô tả của nó có ý nghĩa hơn đối với một số POST so với số GET.

200 với danh sách trống là vừa phải.

14

404 không phải là những gì bạn đang tìm kiếm. Đây là lỗi lỗi. Trường hợp của bạn không phải là lỗi. Khách hàng hiện không biết nếu có bất kỳ bài viết liên quan và muốn biết. Đó không phải là lỗi.

204 cũng không phù hợp. RFC 2616 tiểu bang:

The server has fulfilled the request but does not need to return an 
    entity-body, and might want to return updated metainformation. The 
    response MAY include new or updated metainformation in the form of 
    entity-headers, which if present SHOULD be associated with the 
    requested variant. 

204 không chỉ định rằng không có bài viết liên quan. Nó chỉ nói rằng máy chủ không cần phải gửi dữ liệu.

200 với bộ sưu tập trống, mặt khác sẽ thỏa mãn nhu cầu của bạn.

+0

200 là kết quả phù hợp nhưng tránh xa '200 Found' từ _302 Found_ đã tồn tại. –

4

Trả lại 200 bằng một mảng trống.

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