tôi sẽ đi với 409: Conflict
, bởi vì những gì bạn có là vi phạm trạng thái tài nguyên.
405: Method Not Allowed
cũng sẽ hoạt động. Nếu bạn muốn sử dụng một số 405
, bạn phải gửi tiêu đề Allow
để chỉ ra các phương thức được hỗ trợ và các phương thức được hỗ trợ sẽ thay đổi phụ thuộc vào trạng thái của tài nguyên. Theo tôi, mã phản hồi này phù hợp với tài nguyên chỉ đọc, tài nguyên không thể xóa được nhưng các nhận xét của Darrel cho bài đăng này là hợp lệ. Thông số kỹ thuật không rõ ràng:
Phương pháp được chỉ định trong Dòng yêu cầu không được phép đối với tài nguyên được xác định bởi yêu cầu-URI. Câu trả lời PHẢI bao gồm tiêu đề Cho phép chứa danh sách các phương thức hợp lệ cho tài nguyên được yêu cầu .
Trong cả hai trường hợp, bạn nên cung cấp thông tin trong nội dung phản hồi để khách hàng hiểu nguồn gốc của lỗi.
Về hai phương pháp khác được đề cập:
403: Forbidden
nên được sử dụng khi bạn không có đặc quyền thích hợp để thay đổi tài nguyên, tức là nếu bạn cần phải là một admin để xóa tài nguyên đó và bạn không.
412: Precondition Failed
chủ yếu được sử dụng cho các yêu cầu có điều kiện trong đó các điều kiện tiên quyết được chỉ định rõ ràng trong tiêu đề yêu cầu. Ví dụ, bạn có thể có các yêu cầu PUT có điều kiện chỉ nên thực hiện khi tiêu đề If-Match
hợp lệ. Nếu bạn không chỉ định bất cứ điều gì trong tiêu đề yêu cầu, tôi vẫn muốn chọn 409 trên 412. Dưới đây là spec cho 412:
Điều kiện tiên quyết được đưa ra trong một hoặc nhiều trường yêu cầu-header đánh giá false khi nó được kiểm tra trên máy chủ.Mã phản hồi này cho phép khách hàng đặt điều kiện tiên quyết vào tài nguyên hiện tại metainformation (dữ liệu trường đầu trang) và do đó ngăn chặn được yêu cầu phương pháp không được áp dụng cho tài nguyên khác ngoài dự định.
Nguồn
2012-10-22 13:53:20
Bạn có một tài liệu tham khảo cho lập luận của bạn chống lại 405? Làm thế nào bạn có thể nói rằng một nguồn lực sẽ không bao giờ hỗ trợ một phương pháp cụ thể? Tôi không thấy vấn đề với các phương thức được hỗ trợ thay đổi theo thời gian. –
Vui lòng xem chỉnh sửa của tôi. –
Ngoài ra, nếu bạn nhìn vào định nghĩa của tiêu đề Allow, nó bao gồm chú thích 'Tập thực tế của các phương thức được cho phép được định nghĩa bởi máy chủ gốc tại thời điểm mỗi yêu cầu'. Điều này cho tôi biết rằng tập hợp các phương thức" được phép " dự kiến sẽ thay đổi và 405 phản ánh trạng thái hiện tại. http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-18#section-9.1 –