Tôi đang tạo một API RESTful sẽ xử lý một số tương tác của người dùng, bao gồm cả việc đặt hàng bằng thẻ tín dụng được lưu trữ.
Trong trường hợp đơn đặt hàng thành công, tôi trả lại 200 OK và trong trường hợp yêu cầu đặt hàng không đúng định dạng hoặc không hợp lệ, tôi trả lại 400 Yêu cầu không hợp lệ. Nhưng những gì tôi nên trả lại nếu có vấn đề trong quá trình xử lý thực tế của đơn đặt hàng?
- Đơn đặt hàng POSTS của máy khách đến máy chủ cho tài nguyên người dùng. Nếu người dùng không tồn tại, 404 Not Found sẽ được trả về.
- Định dạng đơn hàng và thông tin được xác thực. Nếu không hợp lệ, 400 Yêu cầu Không hợp lệ sẽ được trả lại.
- Đơn hàng đã được xử lý. Nếu đơn đặt hàng thành công, 201 Tạo được trả lại cho đơn đặt hàng. Nếu gặp lỗi không mong muốn, lỗi 500 Server được trả về.
Bước cuối cùng là vấn đề - tôi phải trả lại gì nếu đơn hàng không hoàn thành vì bất kỳ lý do nào khác? Các tình huống có thể xảy ra có thể bao gồm:
- Sản phẩm đã bán hết
- Người dùng đã đạt đến giới hạn đơn đặt hàng tối đa
- Giao dịch thẻ tín dụng không thành công (không đủ tiền, v.v.)
Điều này có vẻ như không phù hợp với 400 hoặc 500. Nếu bất cứ điều gì tôi có thể thấy đó là 400 nếu không có mã tốt hơn - yêu cầu không hợp lệ theo quy tắc kinh doanh. Nó chỉ có vẻ không chính xác.
Chỉnh sửa: Cũng tìm thấy cuộc thảo luận hiện có này về cùng chủ đề. Tất cả các câu trả lời ở đó dường như đều hướng đến việc sử dụng mã trạng thái cho loại vi phạm này, với một số cuộc thảo luận giữa việc sử dụng 400, 409 hoặc 422.