Versionierung einer RESTful-API mit XML- und JSON-Inhaltstyp
GemäßDiese hervorragende Präsentation Beim Entwerfen von RESTful-Schnittstellen besteht die bevorzugte Methode zum Implementieren der Versionierung darin, den Accept-Header zu verwenden.
GET /products HTTP/1.1
Host: example.com
Accept: application/vnd.com.myservice.v2+xml
Dies funktioniert perfekt für XML Content-Types, aberEs ist möglich, dasselbe Schema für die Versionierung der JSON-Entsprechung zu verwenden?
Dh ist es möglich zu fragen nach:
GET /products HTTP/1.1
Host: example.com
Accept: application/vnd.com.myservice.v2+json
Die Antwort würde ungefähr so lauten:
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>
und das JSON-Äquivalent (Art):
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
}
]