Dịch vụ RESTful của tôi bao gồm tài nguyên đại diện cho một mục ACL. Để cập nhật ACL này, một khách hàng thực hiện yêu cầu PUT
với ACL mới làm thực thể của nó. Khi thành công, thực thể phản hồi PUT
có chứa phiên bản chính thức đã được vệ sinh của ACL mới.Mã trạng thái HTTP REST cho "thành công và do đó bạn không còn quyền truy cập"
Trong hầu hết các trường hợp, mã trạng thái phản hồi HTTP khá rõ ràng. 200
khi thành công, 403
nếu người dùng không được phép chỉnh sửa ACL, 400
nếu ACL mới không đúng định dạng, 404
nếu họ cố đặt ACL trên một mục không tồn tại, 412
nếu tiêu đề If-Match
không khớp và như.
Có một trường hợp, tuy nhiên, nơi mã trạng thái HTTP chính xác không rõ ràng. Nếu người dùng được xác thực sử dụng PUT
để tự xóa mình khỏi ACL thì sao? Chúng tôi cần phải chỉ ra rằng yêu cầu đã thành công nhưng họ không còn có quyền truy cập vào tài nguyên nữa.
Tôi đã xem xét trả lại 200
với ACL mới trong thực thể PUT
, nhưng điều này thiếu bất kỳ dấu hiệu nào cho thấy rằng chúng không còn khả năng GET
tài nguyên nữa. Tôi đã xem xét trả lại trực tiếp 403
, nhưng điều này không cho biết rằng PUT
đã thành công. Tôi đã xem xét việc trả lại 303
với số Location
trỏ trở lại cùng một tài nguyên (trong đó GET
tiếp theo sẽ cung cấp số 403
), nhưng điều này có vẻ như lạm dụng 303
do tài nguyên chưa di chuyển.
Vậy mã trạng thái REST HTTP đúng cho "thành công" là gì và do đó bạn không còn quyền truy cập "?
Có bất kỳ câu trả lời nào trong số này hữu ích không? – Kylar
@Kylar: Có, một vài. Khó chọn đúng người để chấp nhận. – dkarp