Domanda

Dato questo servizio:

POST /hotel HTTP/1.1

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

HTTP/1.1 201 CREATED
Location: /hotel/123

Quando elaboriamo la richiesta sul server convalideremo l'XML hotel nella richiesta rispetto a un DTD.

La domanda è: come best practice REST il cliente dovrebbe fare riferimento al DTD nella richiesta (come si fa normalmente quando si crea un documento XML basato su un DTD)? O questo non è richiesto? Il DTD verrà descritto nei documenti API in modo che gli autori del servizio client siano a conoscenza dei dettagli di convalida DTD.

È stato utile?

Soluzione

Beh, potresti certamente sputare indietro un 400 Bad Request se il corpo della richiesta fallisce un controllo DTD, ma non richiederei la presenza del riferimento DTD. Dovresti consentire che venga omesso e utilizzarlo se è lì, ma fallirei anche la richiesta se specificassero il DTD sbagliato. Il messaggio di errore dovrebbe ovviamente indicare qual è il DTD previsto.

Potresti prendere in considerazione l'idea di saltare il rigoroso controllo di conformità se il DTD viene omesso, dal momento che è più il genere di cose che le persone vogliono quando configurano il software, ma per motivi di prestazioni, potresti voler staccare dopo sapere che tutto funziona.

Altri suggerimenti

Per quanto ne so, REST non ha nulla da dire sui contenuti del corpo POST.

Ovviamente, è necessario convalidare l'XML sul server, quindi la cosa migliore che si può fare è raccomandare al client di convalidare l'XML rispetto al DTD prima di inviarlo, per risparmiare tempo e larghezza di banda. Tuttavia, non hai davvero modo di imporlo.

Penso che la tua responsabilità come scrittore di servizi sia quella di accettare la richiesta indipendentemente dal fatto che si riferisca al DTD, ma questa è solo la mia opinione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top