使用DTD描述RESTful服务中返回的XML?

使用DTD描述RESTful服务中返回的XML?,rest,Rest,鉴于服务: > GET /hotel < HTTP/1.1 200 OK < <hotel> < <a>aaa</a> < <b>aaa</b> > <c>aaa</c> < </hotel> >GET/hotel

鉴于服务:

> GET /hotel

< HTTP/1.1 200 OK
< <hotel>
<   <a>aaa</a>
<   <b>aaa</b>
>   <c>aaa</c>
< </hotel>
>GET/hotel
aaa
< 
是否应该在从服务器返回的XML中引用DTD


这会更好地让客户机验证响应吗?

引用DTD/模式肯定是一种好的做法,是的,如果客户机愿意,它将允许客户机验证响应。它们通常不会。引用DTD/模式无疑是一种好的做法,是的,如果客户选择验证响应,它将允许客户验证响应。它们通常不会。考虑到您选择的标记似乎是根据您的需求定制的,那么我希望看到一种媒体类型,例如

application/vnd.yourcompany.hotel+xml

在您的内容类型HTTP头中。基于此内容类型,客户端将知道它是否有处理此表示的知识。

考虑到您选择的标记似乎是根据您的要求定制的,那么我希望看到一种媒体类型,如

application/vnd.yourcompany.hotel+xml

在您的内容类型HTTP头中。根据此内容类型,客户机将知道是否有知识处理此表示。

媒体类型标题可以帮助客户了解要使用的文档类型。它还可以通过为每个版本提供不同的文档类型来帮助您对服务进行版本设置

application/vnd.yourcompany.hotelv1+xml
application/vnd.yourcompany.hotelv2+xml
等等


客户端还可以在Accepts标头中指定要返回的文档类型。

媒体类型标头可以帮助客户端了解要使用的文档类型。它还可以通过为每个版本提供不同的文档类型来帮助您对服务进行版本设置

application/vnd.yourcompany.hotelv1+xml
application/vnd.yourcompany.hotelv2+xml
等等


客户机还可以在Accepts标题中指定它希望返回的文档类型。

我就是这么想的。虽然我没见过太多人这么做。我们的应用程序是内部的(只有几个客户端),所以不确定它是否是过度的。它的成本不高。在我看来,这比依赖内容类型要好。这就是我的想法。虽然我没见过太多人这么做。我们的应用程序是内部的(只有几个客户端),所以不确定它是否是过度的。它的成本不高。依我看,这比依赖内容类型要好。它是供应商树的标识符,您可以使用它,而无需向IANA注册您的媒体类型。我要做的是让客户端检测媒体类型,然后将响应主体传递给知道如何解码该表示的处理程序。在某些情况下,它会导致应用程序显示包含表示的新UI,在其他情况下,它只返回包含表示信息的对象。这完全取决于媒体类型和原始请求的上下文。我用来描述它的例子是比较加载一个像MS Excel这样的应用程序,然后打开文件并检索Excel文件。这就是大多数客户端应用程序的工作方式,它们创建某种UI,然后启动并获取数据以放入该UI。另一种方法是转到Windows资源管理器,双击Excel文件。这是一种数据驱动的方法。文件扩展名决定如何呈现数据。在REST客户端中,返回的媒体类型可用于驱动应用程序。它是供应商树的标识符,无需向IANA注册媒体类型即可使用。我要做的是让客户端检测媒体类型,然后将响应正文传递给知道如何解码该表示的处理程序。在某些情况下,它会导致应用程序显示包含表示的新UI,在其他情况下,它只返回包含表示信息的对象。这完全取决于媒体类型和原始请求的上下文。我用来描述它的例子是比较加载一个像MS Excel这样的应用程序,然后打开文件并检索Excel文件。这就是大多数客户端应用程序的工作方式,它们创建某种UI,然后启动并获取数据以放入该UI。另一种方法是转到Windows资源管理器,双击Excel文件。这是一种数据驱动的方法。文件扩展名决定如何呈现数据。在REST客户端中,返回的媒体类型可用于驱动应用程序。