Je conçois une API REST pour un projet où les utilisateurs sont toujours sur l'un des plusieurs "plans" - chaque plan définit des limites de ressources, telles que le nombre maximum d'utilisateurs qu'un compte peut avoir ou le nombre maximum de données qu'ils peuvent télécharger. Une fois que l'une de ces limites est atteinte, les utilisateurs peuvent mettre à niveau leurs plans (essentiellement payer) pour obtenir plus de ressources.
Je souhaite renvoyer un code d'état spécial indiquant une situation dans laquelle l'action ne peut pas être effectuée en raison des limites des ressources du compte, et la mise à niveau du plan résoudra ce problème - par exemple, si un utilisateur utilise 100% de sa capacité de stockage et essaie de télécharger un fichier supplémentaire , ils obtiendront cette réponse.
Les candidats sont, à mon humble avis:
403 Forbidden
- cependant, je voudrais faire la distinction entre ce cas et d'autres cas où l'utilisateur n'a tout simplement pas l'autorisation d'effectuer cette action.401 Unauthorized
- ce n'est pas une bonne idée, nous l'utilisons pour des problèmes liés à l'authentification.402 Payment Required
- est assez logique, mais je crains d'utiliser un code d'état non standard mais réservéQuelque chose d'encore moins standard,
423 Locked
car il est peu probable que nous l'utilisions pour autre chose à l'avenir
Une autre option consiste à opter pour quelque chose de très standard tel que 403
mais d'indiquer les détails de l'erreur dans le corps de la réponse.
Je me demande quelle approche vous pensez (a) fonctionnerait le mieux à long terme et (b) respecterait mieux les principes RESTful.