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!

Respuestas a la pregunta(2)

Su respuesta a la pregunta