Я просматривал то, что было описано как пример хороший REST API. GET был отправлен на базовом URI и с медиа-типом, который каким-то образом уже был известен клиенту (что нормально, согласно принципам REST).
To server:
GET /
Host: xrgy.cloud.sun.com
Authorization: Basic xxxxxxxxxxxxxxxxxxx
Accept: application/vnd.com.sun.cloud.Cloud+json
X-Compute-Client-Specification-Version: 0.1
From Server:
HTTP/1.1 200 OK
Content-Type: application/vnd.com.sun.cloud.Cloud+json
Content-Length: nnn
{
"implementation_version": "597",
"vdcs": [
{
"name": "XRGY Virtual Data Center",
"uri": "/vdc"
}
{
"name": "R&D sandbox"
"uri": "/sandbox"
}
],
"uri": "http://xrgy.cloud.sun.com/",
"specification_version": [
"0.5"
]
}
Но я застрял в том, как клиент устанавливает тип носителя для последующего запроса. Я понимаю, что клиент получил URI для следующего запроса из предыдущего ответа. Но откуда у него медиа-тип? Если это предварительная информация для клиента, то как клиенты обычно поддерживают такие сопоставления URI: media-type? Кажется, я определенно упускаю некоторые базовые знания здесь. Вот следующий запрос, отправленный с медиа-типом: application / vnd.com.sun.cloud.Vdc + json!
To server:
GET /vdc
Host: xrgy.cloud.sun.com
Authorization: Basic xxxxxxxxxxxxxxxxxxx
Accept: application/vnd.com.sun.cloud.Vdc+json
X-Compute-Client-Specification-Version: 0.1
From server:
HTTP/1.1 200 OK
Content-Type: application/vnd.com.sun.cloud.Vdc+json
Content-Length: nnn
{
"name" : "XRGY Virtual Data Center",
"uri" : "http://xrgy.cloud.sun.com/vdc",
"vm_templates" : "http://cloud.sun.com/resources/template-cat.json",
"addresses" : [
{
"name": "144.34.100.199",
"uri": "/addresses/144.34.100.199",
"ip_address": "144.34.100.199"
}
],
"cluster" : {
"name" : "ROOT",
"uri" : "/vdc/",
"tags" : [ ],
"volumes" : [ ],
"clusters" : [
]
"tags" : [ ],
"controllers" : [
"start" : "/vdc/ops/start",
"stop" : "/vdc/ops/stop",
]
"vnets" : [
{
"name": "vnet1",
"uri": "/vnets/10.31.145.0",
"netmask": "255.255.255.0",
"network": "10.31.145.0"
}
],
"vms": [
{
* SNIPPED *
}
]
}
}
Я видел другие примеры, где медиа-тип также является частью ссылок в ответе, например, этот следующий ответ, и я могу это понять.
201 Created
Content-Type: application/vnd.bank.org.transfer+xml;charset=UTF-8
<transfer xmlns="urn:org:bank:accounts">
<link rel="self"
href="http://bank.org/transfer/XTA8763"/>
<link rel="http://bank.org/rel/transfer/from"
type="application/vnd.bank.org.account+xml"
href="http://bank.org/account/AZA12093"/>
<link rel="http://bank.org/rel/transfer/to"
type="application/vnd.bank.org.account+xml"
href="http://bank.org/account/ADK31242"/>
<link rel="http://bank.org/rel/transfer/status"
type="application/vnd.bank.org.status+xml"
href="http://bank.org/check/XTA8763"/>
<id>transfer:XTA8763</id>
<amount currency="USD">100</amount>
<note>RESTing</note>
</transfer>