Ich entwerfe eine REST-API für ein Projekt, in dem Benutzer immer einen von mehreren "Plänen" verwenden. Jeder Plan definiert einige Ressourcenbegrenzungen, z. B. die maximale Anzahl von Benutzern, die ein Konto haben darf, oder die maximale Anzahl von Daten, die sie hochladen dürfen. Sobald eines dieser Limits erreicht ist, können Benutzer ihre Pläne aktualisieren (im Wesentlichen bezahlen), um mehr Ressourcen zu erhalten.
Ich möchte einen speziellen Statuscode zurückgeben, der auf eine Situation hinweist, in der die Aktion aufgrund von Kontoressourcenbeschränkungen nicht ausgeführt werden kann, und das Aktualisieren des Plans behebt diesen Fehler, z. B. wenn ein Benutzer 100% seiner Speicherkapazität verwendet und versucht, eine zusätzliche Datei hochzuladen Sie werden diese Antwort erhalten.
Die Kandidaten sind, IMHO:
403 Forbidden
- Ich möchte jedoch zwischen diesem Fall und anderen Fällen unterscheiden, in denen dem Benutzer einfach die Berechtigung zum Ausführen dieser Aktion fehlt.401 Unauthorized
- Keine gute Idee, wir verwenden dies für Authentifizierungsprobleme.402 Payment Required
- Sinnvoll, aber ich mache mir Sorgen über die Verwendung eines nicht standardmäßigen, aber reservierten StatuscodesEtwas noch weniger Standard wie es
423 Locked
unwahrscheinlich ist, dass wir es für irgendetwas anderes in der Zukunft verwenden werden
Eine andere Möglichkeit besteht darin, mit etwas sehr Standardmäßigem zu arbeiten, z. B. 403
die Besonderheiten des Fehlers im Antworttext anzugeben.
Ich frage mich, welcher Ansatz Ihrer Meinung nach (a) auf lange Sicht am besten funktioniert und (b) sich besser an RESTful-Prinzipien hält.