Estoy diseñando una API REST para un proyecto donde los usuarios siempre están en uno de varios "planes": cada plan define algunos límites de recursos, como la cantidad máxima de usuarios que puede tener una cuenta o la cantidad máxima de datos que pueden cargar. Una vez que se alcanza uno de estos límites, los usuarios pueden actualizar sus planes (esencialmente pagar) para obtener más recursos.
Quiero devolver un código de estado especial que indique una situación en la que la acción no se puede realizar debido a los límites de recursos de la cuenta, y la actualización del plan lo resolverá, por ejemplo, si un usuario usa el 100% de su capacidad de almacenamiento e intenta cargar un archivo adicional , obtendrán esta respuesta.
Los candidatos son, en mi humilde opinión:
403 Forbidden
- Sin embargo, me gustaría distinguir entre este caso y otros casos en los que el usuario simplemente no tiene el permiso para realizar esta acción.401 Unauthorized
- No es una buena idea, estamos usando esto para problemas relacionados con la autenticación.402 Payment Required
tiene sentido, pero me preocupa usar un código de estado no estándar pero reservadoAlgo aún menos estándar como
423 Locked
es poco probable que lo usemos para cualquier otra cosa en el futuro
Otra opción es ir con algo muy estándar, como 403
indicar los detalles del error en el cuerpo de la respuesta.
Me pregunto qué enfoque crees que (a) funcionaría mejor a largo plazo y (b) se apegaría mejor a los principios RESTful.
fuente