Servicio web REST: Tipo de contenido de respuesta HTTP aceptable al responder con el estado 4XX (Error de cliente)

No he podido encontrar ninguna documentación en las especificaciones de HTTP que gobierne si es aceptable generar una respuesta HTTP. Incluya un mensaje de error legible (p. Ej., Tipo de contenido: texto / plano) si un cliente HTTP ha realizado una solicitud HTTP no válida. y especificó un encabezado de solicitud que limita los tipos de contenido de respuesta aceptables utilizando un encabezado de aceptación.

Imagine un cliente de servicio web REST emitiendo una solicitud GET no válida a "http: // myhost / validpath? IllegalRequestParameter = rubbish", e incluyendo un encabezado de solicitud "Aceptar: aplicación / xml" o "Aceptar: aplicación / vnd.ms-excel" .

El servidor respondería con un código de estado HTTP en la serie 4XX ("400 Bad Request", en este caso). Pero, ¿cómo podría el servicio transmitir información al cliente sobre la causa del error?

Veo las siguientes opciones:

Cree un mensaje de error de texto simple en el contenido de la respuesta HTTP. Establezca el encabezado de respuesta "Tipo de contenido: texto / plano" e incluya un mensaje de error descriptivo en el contenido de la respuesta. Esto, sin embargo, rompería la restricción "Aceptar" del cliente HTTP.

No incluya un contenido de respuesta HTTP. Esto es claramente válido, pero no es muy útil para el cliente que simplemente sabe que se produjo un "Error de Cliente" pero que no tiene forma de saber por qué (e informar el motivo en un archivo de registro del cliente).

Intente forzar un mensaje de error en un tipo MIME "Aceptable". Esto rara vez es posible. Incluso si el mensaje de error pudiera construirse como una aplicación válida / tipo xml, probablemente rompería un contrato de servicio web (por ejemplo, conformidad con el esquema XML).

Mi pregunta es: ¿la situación anterior se rige por las especificaciones / estándares HTTP existentes?

Referencias:

Definiciones del código de estado HTTP:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.htmlDefiniciones de campo de encabezado HTTPhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Respuestas a la pregunta(1)

Su respuesta a la pregunta