1

鉴于此服务:

POST /hotel HTTP/1.1

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

HTTP/1.1 201 CREATED
Location: /hotel/123

当我们在服务器上处理请求时,我们将hotel根据 DTD 验证请求中的 XML。

问题是,作为 REST 最佳实践,客户端是否应该在请求中引用 DTD(就像通常在基于 DTD 创建 XML 文档时所做的那样)?或者这不是必需的?DTD 将在 API 文档中进行描述,因此客户端服务的编写者将了解 DTD 验证详细信息。

4

2 回答 2

2

据我所知,REST 对 POST 正文的内容没有任何意见。

显然,无论如何您都必须在服务器上验证 XML,因此最好的办法是建议客户端在发送 XML 之前根据 DTD 验证 XML,以节省时间和带宽。但是,你真的没有办法强制执行它。

我认为您作为服务编写者的责任是接受请求,无论它是否引用 DTD,但这只是我的意见。

于 2009-10-28T23:29:49.750 回答
1

好吧,如果请求正文未通过 DTD 检查,您当然可以返回 a 400 Bad Request,但我不要求存在 DTD 引用。您应该允许省略它,并在它存在时使用它,但如果他们指定了错误的 DTD,我也会使请求失败。当然,错误消息应该指出预期的 DTD 是什么。

如果省略了 DTD,您可能需要考虑跳过严格的一致性检查,因为这更像是人们在设置软件时想要的那种东西,但出于性能原因,可能希望在他们知道一切之后离开在职的。

于 2009-10-28T23:43:44.753 回答