Pregunta

Dado este servicio:

POST /hotel HTTP/1.1

<hotel>
  <a>aaa</a>
  <b>bbb</b>
  <c>ccc</c>
</hotel>

HTTP/1.1 201 CREATED
Location: /hotel/123

Cuando procesamos la solicitud en el servidor, validaremos el XML hotel en la solicitud contra un DTD.

La pregunta es, como práctica recomendada REST, ¿debería el cliente referirse a la DTD en la solicitud (como se hace normalmente cuando se crea un documento XML basado en una DTD)? ¿O no se requiere esto? La DTD se describirá en los documentos de la API para que los escritores del servicio al cliente conozcan los detalles de validación de la DTD.

¿Fue útil?

Solución

Bueno, ciertamente podría escupir una 400 Bad Request si el cuerpo de la solicitud falla una verificación de DTD, pero no requeriría que la referencia de DTD esté presente. Debe permitir que se omita y usarlo si está allí, pero también fallaría la solicitud si especifican la DTD incorrecta. El mensaje de error debe, por supuesto, indicar cuál es el DTD esperado.

Es posible que desee considerar omitir la verificación de conformidad estricta si se omite el DTD, ya que es más el tipo de cosas que la gente quiere cuando configuran el software, pero por razones de rendimiento, es posible que desee desconectarse después de que saber que todo está funcionando.

Otros consejos

Que yo sepa, REST no tiene nada que decir sobre el contenido del cuerpo POST.

Obviamente, debe validar el XML en el servidor de todos modos, por lo que lo mejor que puede hacer es recomendar que el cliente valide el XML contra el DTD antes de enviarlo, para ahorrar tiempo y ancho de banda. Sin embargo, realmente no tiene forma de aplicarlo.

Creo que su responsabilidad como redactor de servicios es aceptar la solicitud, ya sea que se refiera o no a la DTD, pero esa es solo mi opinión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top