RESTful URL 中的输出格式如何编码?

Mar*_*arc 4 html rest url http

假设我有一个 RESTful Web 服务,它保存有关可以通过http://example.com/myobject之类的 url 访问的对象的信息。我希望能够以两种格式检索此信息:首先是 XML 格式的纯数据,其次是完整的 HTML 页面,其中还可能包括一个 javascript 接口来更改对象并使用 AJAX 将其放回。

实现这一目标的规范方法是什么?我应该在两个不同的网址(例如http://example.com/myobject?format=xml和 ...format=html )发布我的对象吗?(是否有比使用查询字符串更好的方法来区分此处的 URL?)或者发送诸如多部分 MIME 数据之类的内容是否明智?我可以依赖浏览器能够提取 HTML 部分吗?或者请求中是否有一些我可以使用的 HTTP 标头字段?

(使用不同格式发送的 PUT 或 POST 请求会更容易,因为服务器可以检查格式并相应地解析它。)

Mau*_*fer 5

您也可以使用内容协商而不是查询字符串参数。简而言之,客户端通过请求中的Accept标头发送可接受的媒体类型(例如“application/xml,text/html;q=0.9”),服务器对此进行分析并回复客户端首选的媒体类型(此过程称为服务器驱动协商

当进行服务器驱动的协商时,响应应包含一个Vary 标头,指示协商中使用的请求标头

请记住,要使其正常工作,客户端必须发送适当的Accept标头。