Projektuję interfejs API REST dla projektu, w którym użytkownicy są zawsze w jednym z kilku „planów” - każdy plan określa pewne ograniczenia zasobów, takie jak maksymalna liczba użytkowników, których może mieć konto lub maksymalna liczba danych, które mogą przesłać. Po osiągnięciu jednego z tych limitów użytkownicy mogą zaktualizować swoje plany (zasadniczo zapłacić), aby uzyskać więcej zasobów.
Chcę zwrócić specjalny kod stanu wskazujący sytuację, w której działanie nie może zostać wykonane z powodu limitów zasobów konta, a aktualizacja planu rozwiąże ten problem - na przykład jeśli użytkownik zużyje 100% pojemności pamięci i spróbuje przesłać dodatkowy plik otrzymają tę odpowiedź.
Kandydatami są IMHO:
403 Forbidden
- chciałbym jednak odróżnić ten przypadek od innych przypadków, w których użytkownik po prostu nie ma pozwolenia na wykonanie tej czynności.401 Unauthorized
- niezbyt dobry pomysł, używamy tego do problemów związanych z uwierzytelnianiem.402 Payment Required
- ma to sens, ale martwię się o użycie niestandardowego, ale zarezerwowanego kodu statusuCoś jeszcze mniej standardowego,
423 Locked
ponieważ jest mało prawdopodobne, że będziemy go używać do wszystkiego innego w przyszłości
Inną opcją jest użycie czegoś bardzo standardowego, na przykład 403
wskazanie specyfiki błędu w treści odpowiedzi.
Zastanawiam się, które podejście według ciebie (a) będzie działało najlepiej na dłuższą metę, a (b) lepiej przestrzega zasad RESTful.