Sto progettando un'API REST per un progetto in cui gli utenti sono sempre su uno dei numerosi "piani" - ogni piano definisce alcuni limiti di risorse, come il numero massimo di utenti che un account può avere o il numero massimo di dati che possono caricare. Una volta raggiunto uno di questi limiti, gli utenti possono aggiornare i propri piani (essenzialmente pagare) per ottenere più risorse.
Voglio restituire un codice di stato speciale che indica una situazione in cui l'azione non può essere eseguita a causa dei limiti delle risorse dell'account e l'aggiornamento del piano risolverà questo problema, ad esempio se un utente utilizza il 100% della capacità di archiviazione e prova a caricare un file aggiuntivo , otterranno questa risposta.
I candidati sono, IMHO:
403 Forbidden
- tuttavia, vorrei distinguere tra questo caso e altri casi in cui l'utente non dispone semplicemente dell'autorizzazione per eseguire questa azione.401 Unauthorized
- non è una buona idea, lo stiamo usando per problemi relativi all'autenticazione.402 Payment Required
- ha un senso, ma sono preoccupato per l'uso di un codice di stato non standard ma riservatoQualcosa di ancora meno standard come è
423 Locked
improbabile che lo useremo per qualsiasi altra cosa in futuro
Un'altra opzione è quella di andare con qualcosa di molto standard come 403
ma indicare i dettagli dell'errore nel corpo della risposta.
Mi chiedo quale approccio ritieni possa (a) funzionare meglio a lungo termine e (b) aderirebbe meglio ai principi RESTful.