2013-06-05 47 views
11

Tôi đang tìm mã trạng thái chính xác để gửi lỗi thất bại thông qua api.Mã trạng thái HTTP cho lỗi chung

Kịch bản chính xác không thêm sản phẩm vào giỏ hàng.

Lỗi có thể xảy ra vì nhiều lý do, nhưng tôi muốn trả về một mã http duy nhất.

Điều gì sẽ là tốt nhất?

Tôi đã xem qua chúng và không thể thấy bất kỳ điều gì khớp chính xác với nhu cầu tại đây.

Một số trong những điều kiện thất bại có thể là:

Not enough stock to satisfy 
Stock limit reached for that particular product 
Product no longer available 
+0

Bạn có thể muốn có HTTP 400. Xem http://stackoverflow.com/questions/1959947/whats-an-appropriate-http-status-code-to-return-by-a-rest-api-service-for -a-val – lreeder

+1

Ngoài ra, hãy đọc bản dự thảo IETF này: http://www.ietf.org/id/draft-nottingham-http-problem-04.txt –

Trả lời

11

Nếu đó là lỗi máy chủ sau đó nó nên được 500. Nếu đó là lỗi của khách hàng, sử dụng 400.

Thật khó để được chính xác hơn đó mà không thấy URI và những gì bạn làm với nó. Ví dụ: nếu "Sản phẩm không còn khả dụng" là kết quả của yêu cầu GET, thì nó sẽ là 404 (không tìm thấy). Nhưng nếu đó là yêu cầu POST, thì nó phải là 200 hoặc 202.

Đối với hai loại còn lại, chúng có thể không phải là lỗi. Có thể khách hàng đã gửi yêu cầu chính xác nhưng cổ phiếu đã bị người khác tiêu thụ, trong trường hợp này máy chủ phải trả lại 409 (xung đột). Nếu yêu cầu quá nhiều cổ phiếu ngay từ đầu thì chỉ cần 200/202.

Nếu bạn chỉ phải có một mã, chỉ cần sử dụng 400 và 200 (xem ở trên).

+0

Tôi đã cập nhật câu hỏi với các lỗi mẫu. Họ có thể phù hợp hơn với 400 nhưng nó vẫn không có vẻ đúng –

+0

@MartyWallace tôi cập nhật câu trả lời của tôi. – imel96

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