2016-05-23 32 views
5

Giả sử máy chủ của tôi hiển thị các tài nguyên có trạng thái (Not approved, Approved, Auto-approved). Nếu tài nguyên ở trạng thái Not approved, tài khoản không được cho phép đối với khách hàng, nghĩa là khách hàng được phép biết về sự tồn tại của tài nguyên (họ vẫn làm) nhưng nên bị từ chối truy cập cho đến khi tài nguyên ở trạng thái chính xác.REST: Tài nguyên ở trạng thái sai - Tôi nên trở về trạng thái HTTP nào?

Mã trạng thái HTTP sẽ thể hiện điều gì đó dọc theo dòng: "Có, tài nguyên bạn đang cố gắng truy cập tồn tại, nhưng bạn sẽ phải chờ cho đến khi được chấp thuận bởi ai đó. Vui lòng thử lại sau".

Mã trạng thái HTTP nào cần được trả lại trong trường hợp này? Trả lại 404 (Not found) dường như không đúng, vì tài nguyên thực tế tồn tại. Tình trạng đang 412 (Precondition failed) âm thanh về bên phải, nhưng the RFC nói rất nhiều về tiêu đề HTTP ...

Các 412 (kiện tiên quyết Không thành công) mã trạng thái chỉ ra rằng một hoặc nhiều điều kiện được đưa ra trong các lĩnh vực theo yêu cầu tiêu đề đánh giá false khi thử nghiệm trên máy chủ. Mã phản hồi này cho phép khách hàng đặt các điều kiện tiên quyết vào trạng thái tài nguyên hiện tại (hiện tại là các đại diện và siêu dữ liệu) và, do đó, ngăn chặn phương thức yêu cầu không được áp dụng nếu tài nguyên đích ở trạng thái không mong muốn.

+2

Vui lòng cụ thể hơn về ý nghĩa của "không nên được accesible cho khách hàng". Khách hàng có nên được phép biết rằng tài nguyên tồn tại không? –

+1

@DisplayName, cảm ơn. Tôi đã cập nhật câu hỏi. –

Trả lời

4

Các điều kiện nêu trong bản mô tả đề cập đến tiêu đề HTTP như If-Match, If-Modified-Since, If-None-Match, If-Range hoặc If-Unmodified-Since nên việc sử dụng các 412 sẽ không thích hợp trong trường hợp của bạn.

Tôi nghĩ tùy thuộc vào cách bạn giải thích nếu Not approved tài nguyên đơn giản không có sẵn 404, bị hạn chế đối với một số người dùng nhất định 403 hoặc bị khóa 423.

Tôi muốn nói trong trường hợp của bạn 423 (Locked) (cho đến khi phê duyệt) sẽ là câu trả lời đúng.

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