Tôi đang thiết kế API REST cho một dự án nơi người dùng luôn ở một trong một số "gói" - mỗi gói xác định một số giới hạn tài nguyên, chẳng hạn như số lượng người dùng tối đa mà tài khoản có thể có hoặc số lượng dữ liệu tối đa họ có thể tải lên. Khi đạt được một trong những giới hạn này, người dùng có thể nâng cấp gói của họ (về cơ bản là trả tiền) để có thêm tài nguyên.
Tôi muốn trả về mã trạng thái đặc biệt chỉ ra tình huống không thể thực hiện hành động do giới hạn tài nguyên tài khoản và việc nâng cấp gói sẽ giải quyết điều này - ví dụ: nếu người dùng sử dụng 100% dung lượng lưu trữ của họ và cố gắng tải lên một tệp bổ sung , họ sẽ nhận được phản hồi này.
Các ứng cử viên là, IMHO:
403 Forbidden
- tuy nhiên, tôi muốn phân biệt giữa trường hợp này và các trường hợp khác mà người dùng chỉ đơn giản là không có quyền để thực hiện hành động này.401 Unauthorized
- không phải là một ý tưởng tốt, chúng tôi đang sử dụng điều này để xác thực các vấn đề liên quan.402 Payment Required
- có ý nghĩa nhưng tôi lo lắng về việc sử dụng mã trạng thái không chuẩn nhưng được bảo lưuMột cái gì đó thậm chí ít tiêu chuẩn hơn như
423 Locked
không có khả năng chúng ta sẽ sử dụng nó cho bất cứ điều gì khác trong tương lai
Một lựa chọn khác là đi với một cái gì đó rất chuẩn như 403
nhưng chỉ ra các chi tiết cụ thể của lỗi trong phần thân phản hồi.
Tôi đang tự hỏi cách tiếp cận nào bạn tin rằng (a) sẽ hoạt động tốt nhất trong thời gian dài và (b) sẽ gắn bó hơn với các nguyên tắc RESTful.