Además de la respuesta de @ Dherik.
Los URI son identificadores , por lo que debemos tener en cuenta que ( /a/{id}/b
es un identificador). El URI no tiene sentido para la WWW, y tampoco lo es para el cliente HTTP.
404 es la respuesta correcta . En esencia, el servidor está respondiendo
No encontré ningún recurso con esa identificación. Recurso no encontrado
1
No importa si el recurso que falta es padre o hijo .
Nosotros, los desarrolladores, vemos jerarquías y rutas en el URI, pero los clientes HTTP no. En otras palabras, HTTP solo debe ser interpretado por clientes HTTP pero no por humanos (desarrolladores, usuarios finales, etc.).
En caso de dudas, no pregunte qué código tiene sentido para usted (humano). Pregunte, qué código tiene sentido para el cliente HTTP. ¿Cómo quiere que se comporte el cliente HTTP?
¿Por qué? Debido a que algún código de estado hace que estos clientes realicen ciertas operaciones. Por ejemplo, 302 . Este código generalmente hace que los navegadores web redirijan a una ubicación específica (URI) informada en los encabezados de respuesta.
Puede que este no sea su caso, pero es importante tener en cuenta. En última instancia, los códigos de estado HTTP están dirigidos a clientes HTTP. No a nuestras aplicaciones. No a las personas.
1: 409 rara vez se implementa como error de navegación. Por lo general, implica la ejecución de operaciones remotas (eliminar, actualizar, nuevas, etc.). Pero el URI debería existir. De lo contrario, 404 prevalecerá