Pergunta

Dado este serviço:

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 processar o pedido no servidor que irá validar o XML hotel no pedido contra um DTD.

A pergunta é, como uma melhor prática resto deve o cliente consulte o DTD no pedido (como normalmente se faz ao criar um documento XML baseado em um DTD)? Ou isso é não é necessário? O DTD serão descritos na documentação da API para que os escritores do serviço de cliente estará ciente dos detalhes de validação DTD.

Foi útil?

Solução

Bem, você poderia certamente cuspir de volta um 400 Bad Request se o corpo solicitação falhar uma verificação DTD, mas eu não exigiria a referência DTD para estar presente. Você deve permitir que ele seja omitido, e usá-lo se ele está lá, mas eu também iria falhar o pedido se especificarem o DTD errada. A mensagem de erro deve, é claro, indicar o que o DTD esperado é.

Você pode querer considerar pular a verificação de conformidade estrita se o DTD for omitido, uma vez que é mais o tipo de coisa que as pessoas querem quando eles estão a criação do software, mas por motivos de desempenho, pode querer ter off depois que eles sei que tudo está funcionando.

Outras dicas

Para meu conhecimento, REST não tem nada a dizer sobre o conteúdo do corpo POST.

Obviamente, você tem que validar o XML no servidor de qualquer maneira, então o melhor que você pode fazer é recomendar que o cliente valida o XML contra o DTD antes de enviá-lo, para economizar tempo e largura de banda. No entanto, você realmente não tem maneira de aplicá-la.

Eu acho que sua responsabilidade como um escritor do serviço é aceitar a solicitação ou não se refere à DTD, mas isso é apenas minha opinião.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top