Sto progettando un'API REST per un progetto in cui gli utenti sono sempre su uno di diversi "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 può caricare. Una volta raggiunto uno di questi limiti, gli utenti possono aggiornare i loro piani (essenzialmente pagare) per ottenere più risorse.
Desidero 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 lo risolverà, ad esempio se un utente utilizza il 100% della capacità di archiviazione e prova a caricare un file aggiuntivo, riceveranno questa risposta.
I candidati sono, IMHO:
-
403 Forbidden
- tuttavia, vorrei distinguere tra questo caso e altri casi in cui l'utente semplicemente non ha il permesso di eseguire questa azione. -
401 Unauthorized
- non è una buona idea, lo stiamo usando per problemi relativi all'autenticazione. -
402 Payment Required
- ha senso, ma sono preoccupato di usare un codice di stato non standard ma riservato -
Qualcosa di ancora meno standard come
423 Locked
in quanto è improbabile che lo useremo per qualsiasi altra cosa in futuro
Un'altra opzione è andare con qualcosa di molto standard come 403
ma indicare le specifiche dell'errore nel corpo della risposta.
Mi chiedo quale approccio pensi che (a) funzioni meglio a lungo termine e (b) si attenga più bene ai principi RESTful.