web services - respuesta - Códigos de error HTTP 406 y 415
response status codes (5)
406 es devuelto por el servidor cuando no puede responder en función de aceptar los encabezados de solicitud (es decir, tienen un encabezado Aceptar que indica que solo quieren XML).
415 es devuelto por el servidor cuando la entidad enviada en una solicitud (contenido en un POST o PUT) tiene un tipo de medio no compatible (es decir, enviaron XML).
entonces ... 406 cuando no puedes enviar lo que quieren, 415 cuando envían lo que no quieres.
¡Espero que ayude!
Estoy escribiendo un servicio web que solo acepta json, y también genera solo json.
Entonces, debo devolver el código de estado apropiado si se solicita otro formato.
Parece que tengo dos opciones:
- 406 - No aceptable
- 415 - Tipo de medio no admitido
Sería genial si alguien pudiera iluminarme en cuanto a la semántica de los dos códigos.
406 se usa cuando el cliente solicita una respuesta en un tipo de contenido no compatible (en su caso, cualquier cosa que no sea JSON) utilizando el encabezado Aceptar. El 415, por otro lado, se usa cuando el cliente PUBLICA o PONGA datos en un tipo de contenido no compatible.
En pocas palabras: use 406 si no puede salir en el formato esperado y use 415 si no admite el formato de entrada.
Para citar RFC2616 :
406 no aceptable
El recurso identificado por la solicitud solo es capaz de generar entidades de respuesta que tienen características de contenido no aceptables según los encabezados de aceptación enviados en la solicitud.
Cuando un cliente consulta su servicio, verifique los encabezados Accept*
que envió; si no coincide con la application/json
(o un comodín, por ejemplo, */*
), devuelve esto. La respuesta debería indicar "solo servimos JSON aquí".
415 Tipo de medio no admitido
El servidor se niega a atender la solicitud porque la entidad de la solicitud está en un formato no admitido por el recurso solicitado para el método solicitado.
El solo hecho de devolver 415 Unsupported Media Type
debería ser la respuesta mínima para "el cliente ha enviado algo que no es JSON, no puede funcionar con eso"; no estoy seguro de si hay un encabezado para indicar "necesitas enviar JSON"
RFC2616 te ayuda!
http://www.rfc2616.com/#10.4.7
http://www.rfc2616.com/#10.4.16
Elegiría el 415, se adapta bastante bien a tu descripción.
Editar: Oh. IC. "la entidad de la solicitud está en un formato no admitido por el recurso solicitado". Entonces, si tiene una solicitud con contenido y ese contenido tiene un tipo incorrecto, debe lanzar la respuesta 415.
- 406 si se envió un encabezado
Accept
no se puede completar. - 415 si se envía un tipo de
Content-Type
que no puede usar.