鉴于此服务:

POST /hotel HTTP/1.1

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

HTTP/1.1 201 CREATED
Location: /hotel/123

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

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

有帮助吗?

解决方案

好吧,如果请求主体未通过DTD检查,您当然可以吐回 400 Bad Request ,但我不会要求DTD引用存在。您应该允许它被省略,如果它在那里则使用它,但如果它们指定了错误的DTD,我也会失败。当然,错误消息应该表明预期的DTD是什么。

如果省略DTD,您可能需要考虑跳过严格的一致性检查,因为它更像人们在设置软件时想要的东西,但出于性能原因,可能希望在它们之后关闭知道一切正常。

其他提示

据我所知,REST对POST主体的内容没有任何说法。

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

我认为您作为服务作者的责任是接受请求是否涉及DTD,但这只是我的意见。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top