OK vì vậy nó không phải là về tính đơn giản. Nhưng sau đó một câu hỏi tiếp theo có thể là, nếu chúng ta vẫn chọn sử dụng 204 trong XÓA tiếp theo thì sao? Là nó ổn?
Câu hỏi hay. Động cơ có thể hiểu được: cho phép khách hàng vẫn đạt được kết quả dự kiến mà không cần lo lắng về việc xử lý lỗi. Tôi sẽ nói rằng, trả về 204 trong DELETE tiếp theo, là một "lời nói dối trắng" phía máy chủ phần lớn là vô hại, mà phía máy khách sẽ không nhận ra sự khác biệt ngay lập tức. Đó là lý do tại sao có ~ 25% người làm điều đó trong tự nhiên và nó dường như vẫn hoạt động. Chỉ cần lưu ý rằng, lời nói dối như vậy có thể được coi là kỳ lạ về mặt ngữ nghĩa, bởi vì GET /non-exist
trả về 404 nhưng DELETE /non-exist
lại cho 204, tại thời điểm đó khách hàng sẽ nhận ra dịch vụ của bạn không hoàn toàn tuân thủ phần 6.5.4 404 Not Found .
Nhưng tôi muốn chỉ ra rằng, cách dự định được gợi ý bởi RFC 7231, tức là trả về 404 trong lần DELETE tiếp theo, không phải là một vấn đề ngay từ đầu. Có gấp 3 lần nhà phát triển chọn làm điều đó và bạn đã bao giờ nghe thấy một sự cố lớn hoặc phàn nàn do khách hàng không thể xử lý 404 chưa? Có lẽ, không, và đó là bởi vì, bất kỳ ứng dụng khách tốt nào triển khai HTTP DELETE (hoặc bất kỳ phương thức HTTP nào, cho vấn đề đó), sẽ không mù quáng cho rằng kết quả sẽ luôn là thành công 2xx. Và sau đó, khi nhà phát triển bắt đầu xem xét việc xử lý lỗi, 404 Not Found sẽ là một trong những lỗi đầu tiên xuất hiện trong tâm trí. Tại thời điểm đó, anh ấy / cô ấy có thể sẽ rút ra kết luận rằng, hoạt động HTTP DELETE bỏ qua lỗi 404 là an toàn về mặt ngữ nghĩa. Và họ đã làm như vậy.