Discriminar entre infraestructura y lógica empresarial al usar códigos de estado HTTP
Estamos tratando de construir una interfaz REST que permita a los usuarios probar la existencia de un recurso específico. Supongamos que estamos vendiendo nombres de dominio: el usuario debe determinar si el dominio está disponible.
Un HTTPGET
combinado con200
y404
Los códigos de respuesta parecen razonables a primera vista.
El problema que tenemos es discriminar entre una solicitud atendida con éxito por nuestro servicio de búsqueda y una solicitud atendida bajo un comportamiento excepcional de otros componentes. Por ejemplo:
404
y200
pueden ser devueltos por proxies intermediarios que realmente bloquean la solicitud. Esto puede deberse a una mala configuración del proxy, o incluso a una infraestructura externa como la cafetería Wifi que utiliza una autenticación deficiente basada en formularios.
Los clientes podrían estar usando URL rotas. Esto podría ocurrir por desaprobación o (nuevamente) por una configuración incorrecta. Podríamos combatir a los primeros a través de301
, sin embargo.
¿Cuál es la mejor práctica actual para discriminar entre las respuestas que se han cumplido con éxito en contra de la intención del cliente para esa solicitud y las respuestas servidas a través de un comportamiento excepcional?
El problema se elimina mediante la tunelización de las respuestas a través del cuerpo de respuesta, ya que podemos asegurarnos de que sean exclusivas de nuestro servicio. Sin embargo, ¡no parece muy RESTANTE!