what restful net codes code xml rest http-status-codes restful-architecture http-status-code-400

xml - codes - restful api net



DESCANSO-Cuándo usar 400("Solicitud incorrecta") (2)

De la lista de códigos de estado HTTP de Wikipedia :

400 Solicitud incorrecta: la solicitud no se puede cumplir debido a una sintaxis incorrecta.

En este caso, su cliente le envió una carga útil XML que tenía un código postal no válido, que es una forma de sintaxis no válida; por lo tanto, enviar una Solicitud incorrecta 400 es un código de error apropiado para regresar en esta situación.

Además, Wikipedia cita el RFC-4918 como un recurso sobre este tema. De este documento, encontrará la siguiente información:

Los servidores PUEDEN rechazar solicitudes cuestionables (a pesar de que consisten en XML bien formado), por ejemplo, con un código de estado 400 (Solicitud incorrecta) y un cuerpo de respuesta opcional que explica el problema.

Ya que su solicitud está bien formada (el XML no es malo, solo contiene información semánticamente incorrecta) puede rechazar el contenido con el código de estado 400. La palabra *may* sugiere que hay otras opciones.

Si bien podría sentirse tentado a usar el código de estado 422, esto no sería correcto en esta situación, ya que el código postal no válido no cumple con los criterios para ser un error semántico. Lee abajo...

De Wikipedia:

422 Entidad no procesable (WebDAV; RFC 4918) : la solicitud estaba bien formada pero no se pudo seguir debido a errores semánticos.

Además, aquí hay algunas definiciones para ayudar en la interpretación del código de estado 422 :

  • Los errores de sintaxis se producen durante el análisis del código de entrada y son causados ​​por declaraciones gramaticamente incorrectas. Los errores típicos pueden ser un carácter ilegal en la entrada, un operador que falta, dos operadores en una fila, dos declaraciones en la misma línea sin punto y coma, paréntesis desbalanceados, una palabra reservada fuera de lugar, etc.

  • Los errores semánticos se producen durante la ejecución del código, después de que se haya analizado como gramaticalmente correcto. Esto tiene que ver no con cómo se construyen las declaraciones, sino con lo que significan. Cosas tales como tipos o tamaños de variables incorrectos, variables inexistentes, subíndices fuera de rango y similares, son errores semánticos.

Su código postal no válido no es un error de sintaxis ni un error semántico; por lo tanto, es razonable descartar el código de estado 422 como una opción.

Para responder a su pregunta, el código de estado 400 es apropiado; Sin embargo, también puede tener otras opciones.

Tengo un recurso como este ventas / clientes / {customerno}. Si un cliente envía una solicitud PUT a este recurso, devolvería 400 - Solicitud incorrecta si el xml en el cuerpo de la entidad no es un xml válido. Pero qué pasa si el xml es válido, pero el contenido del xml no es válido. Digamos, por ejemplo, que el cliente está intentando actualizar el PostCode de los clientes y está proporcionando un PostCode que no es válido. ¿Es correcto devolver 400 - Solicitud incorrecta en este caso, o es otro código http que debería haber usado?


La versión revisada de la especificación de HTTP que se encuentra here ha actualizado la redacción para intentar evitar esta confusión de que 400 se limitan a solicitudes mal formadas.

7.4.1. 400 Petición Incorrecta

El servidor no puede o no procesará la solicitud, debido a un error del cliente (por ejemplo, sintaxis con formato incorrecto).