En una API HATEOAS se devuelven enlaces que representan posibles transiciones de estado. Un cliente conforme debería estar recuperando y siguiendo esos enlaces, pero si un cliente no conforme está construyendo URI en lugar de seguir los enlaces suministrados, ¿cuál sería el código / respuesta de estado más apropiado para devolver?
- 400 funcionaría, junto con alguna información en el cuerpo de respuesta: esto es lo que estamos haciendo actualmente
- 403 Supongo que estaría mal, ya que implica que la solicitud nunca podría funcionar, pero potencialmente el enlace puede estar disponible en el futuro
- 404 suena plausible - en este momento el recurso no existe
¿Qué piensa la gente? Sé que las solicitudes condicionales pueden manejar solicitudes basadas en respuestas obsoletas (que resultan, por ejemplo, en 412), pero esta es una situación ligeramente diferente.
Actualizar:
Bien, ahora veo que la respuesta correcta para este tipo de operaciones no válidas sería un 404. ¿Qué tal si la sintaxis de una solicitud es correcta, va a un recurso válido pero de alguna manera está violando una regla de negocios? Aquí hay un par de ejemplos artificiales:
- Digamos que el cliente puede proporcionar dos números que deben estar dentro del 20% entre sí, pero de lo contrario podría ser cualquier número.
- Digamos que el cliente puede proporcionar un número que pasa por algún cálculo cuyo resultado indica que el número original proporcionado era incorrecto.
¿400 es la respuesta correcta para estos?