【发布时间】:2012-08-15 18:32:15
【问题描述】:
根据this excellent presentation 设计 RESTful 接口,实现版本控制的首选方法是利用 Accept-header,使用类似的东西:
GET /products HTTP/1.1
Host: example.com
Accept: application/vnd.com.myservice.v2+xml
这对 XML 内容类型非常有效,但是是否可以使用相同的方案来控制 JSON 等效项?
即,是否可以要求:
GET /products HTTP/1.1
Host: example.com
Accept: application/vnd.com.myservice.v2+json
响应会是这样的:
HTTP/1.1 200 OK
Content-Type: application/vnd.com.myservice.v2+xml; charset=UTF-8
Allow: GET, POST
<?xml version="1.0" encoding="utf-8"?>
<products xmlns="urn:com.example.products"
xmlns:xl="http://www.w3.org/1999/xlink">
<product id="1234" xl:type="simple"
xl:href="http://example.com/products/1234">
<name>Red Stapler</name>
<price currency="EUR">3.14</price>
<availability>false</availability>
</product>
</products>
和 JSON 等价物(有点):
HTTP/1.1 200 OK
Content-Type: application/vnd.com.myservice.v2+json; charset=UTF-8
Allow: GET, POST
[
{
id: "1234",
links: [
{
rel: "self",
href: "http://example.com/products/1234"
}
],
name: "Red Stapler",
price: {
currency: "EUR",
value: 3.14
},
availability: false
}
]
【问题讨论】:
-
+1 表示该演示文稿的链接(如果没有其他内容)。谢谢。
标签: json rest content-type http-1.1 hateoas