在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ PATCH Support
介紹
創(chuàng)建,更新,刪除資源
資源獲取
URLs
文檔結(jié)構(gòu)
FAQ
Errors
The Example.com API Profile
Examples
PATCH Support

PATCH Support

JSON API服務(wù)器可以選擇性支持,遵循JSON Patch規(guī)范[RFC6902]的HTTP PATCH請求。上面提到使用POST, PUTDELETE進(jìn)行的操作,JSON Patch都擁有等效操作。從這里開始,PATCH請求發(fā)出的JSON Patch操作,都被簡單的稱作“PATCH"操作。

PATCH請求必須聲明Content-Type:application/json-patch+json頭。

PATCH操作必須作為數(shù)組發(fā)送,以遵循JSON Patch規(guī)范。服務(wù)器可能會(huì)限制頂層數(shù)組類型,順序和操作數(shù)量。

請求 URLs

每個(gè)PATCH請求的URL應(yīng)該映射待更新的資源或關(guān)聯(lián)。

PATCH操作內(nèi)的每個(gè)"path"應(yīng)該相對于請求URL。請求URL和PATCH操作的"path"是附加的,合并后獲取特定資源,集合,屬性,或者關(guān)聯(lián)目標(biāo)。

PATCH操作可以在API的根URL使用。此時(shí),PATCH操作的"path"必須包含完整的資源URL。API表示的任意資源都可以進(jìn)行常規(guī)的"fire hose"更新。如上所述,服務(wù)器可能會(huì)限制類型,排序和批量操作數(shù)量。

創(chuàng)建資源with PATCH

要?jiǎng)?chuàng)建資源,執(zhí)行"add"操作, "path"指向?qū)?yīng)資源集合的末尾 ("/-")。"value"必須包含一個(gè)資源對象。

比如,新photo通過如下請求創(chuàng)建:

PATCH /photos
Content-Type: application/json-patch+json
Accept: application/json

[
  { 
    "op": "add", 
    "path": "/-", 
    "value": {
      "title": "Ember Hamster",
      "src": "http://example.com/images/productivity.png"
    }
  }
]

更新屬性with PATCH

要更新屬性,執(zhí)行"replace" 操作,"path"值指定屬性名。

例如,下面請求只更新/photos/1src值。

PATCH /photos/1
Content-Type: application/json-patch+json

[
  {
  "op": "replace",
  "path": "/src",
  "value": "http://example.com/hamster.png"
 }
]

更新關(guān)聯(lián)with PATCH

要更新關(guān)聯(lián),向?qū)?yīng)的關(guān)聯(lián)URL發(fā)出合適的PATCH操作即可。

服務(wù)器可能支持更高層級的更新,像資源的URL(甚至是API的根URL)。如上所述,請求URL和每個(gè)操作的"path"是附加的,合并后獲得特定關(guān)聯(lián)URL目標(biāo)。

關(guān)聯(lián)更新with PATCH

要更新單對象關(guān)聯(lián),對指向關(guān)聯(lián)的URL和"path" 執(zhí)行"replace"操作。

例如:下面請求更新article的author

PATCH /article/1/links/author
Content-Type: application/json-patch+json

[
 {
  "op": "replace",
  "path": "/",
  "value": "1"
 }
]

要移除單對象關(guān)聯(lián),對關(guān)聯(lián)執(zhí)行remove操作。例如:

PATCH /article/1/links/author
Content-Type: application/json-patch+json

[
  { 
    "op": "remove", 
    "path": "/" 
  }
]

更新多對象關(guān)聯(lián) with PATCH

盡管在GET響應(yīng)中,多對象關(guān)聯(lián)以JSON數(shù)組形式表示,但是更新時(shí)更像是集合。

要添加元素到多對象關(guān)聯(lián),執(zhí)行指向關(guān)聯(lián)URL的"add" 請求。由于操作指向集合末尾, "path" 必須以"/-"結(jié)尾。

例如,考慮下面的GET請求:

GET /photos/1
Content-Type: application/vnd.api+json

{
  "links": {
    "comments": "http://example.com/comments/{comments}"
  },
  "photos": {
    "id": "1",
    "href": "http://example.com/photos/1",
    "title": "Hamster",
    "src": "images/hamster.png",
    "links": {
      "comments": [ "1", "5", "12", "17" ]
    }
  }
}

PATCH請求執(zhí)行add操作,即可將comment 30 轉(zhuǎn)移到這個(gè)photo。

PATCH /photos/1/links/comments
Content-Type: application/json-patch+json

[
  { 
    "op": "add", 
    "path": "/-", 
    "value": "30"
  }
]

要移除多對象關(guān)聯(lián),對指向關(guān)聯(lián)對象的URL執(zhí)行"remove"操作。因?yàn)椴僮髂繕?biāo)是元素集合,"path"必須以"/<id>"結(jié)尾。

比如,要移除photo的comment 5,執(zhí)行"remove"操作:

PATCH /photos/1/links/comments
Content-Type: application/json-patch+json

[
  { 
    "op": "remove", 
    "path": "/5" 
  }
]

刪除資源with PATCH

要?jiǎng)h除資源,對指向資源的 URL 和"path"執(zhí)行 "remove" 操作。

例如,photo 1 能使用下面請求刪除:

PATCH /photos/1
Content-Type: application/json-patch+json
Accept: application/vnd.api+json

[
  { 
    "op": "remove",
    "path": "/"
  }
]

響應(yīng)

204 No Content

PATCH請求成功,客戶端當(dāng)前的屬性保持最新,服務(wù)器必須響應(yīng)204 No Content 狀態(tài)碼。

200 OK

如果服務(wù)器接受更新,但是在請求指定內(nèi)容之外做了資源修改,必須響應(yīng)200 OK以及更新的資源實(shí)例。

服務(wù)器必須指定Content-Type:application/json頭。響應(yīng)內(nèi)容必須包含JSON對象數(shù)組,每個(gè)對象必須遵循JSON API媒體類型(application/vnd.api+json)。數(shù)組中的響應(yīng)對象必須有序,并且對應(yīng)請求文檔操作。

例如,一個(gè)請求以分離操作,創(chuàng)建兩個(gè)photos。

PATCH /photos
Content-Type: application/json-patch+json
Accept: application/json

[
  { 
    "op": "add", 
    "path": "/-", 
    "value": {
      "title": "Ember Hamster",
      "src": "http://example.com/images/productivity.png"
    }
  },
  { 
    "op": "add", 
    "path": "/-", 
    "value": {
      "title": "Mustaches on a Stick",
      "src": "http://example.com/images/mustaches.png"
    }
  }
]

響應(yīng)內(nèi)容在數(shù)組中包含對應(yīng)的JSON API文檔。

HTTP/1.1 200 OK
Content-Type: application/json

[
  {
    "photos": [{
      "id": "123",
      "title": "Ember Hamster",
      "src": "http://example.com/images/productivity.png"
    }]
  }, {
    "photos": [{
      "id": "124",
      "title": "Mustaches on a Stick",
      "src": "http://example.com/images/mustaches.png"
    }]
  }
]

其它響應(yīng)

當(dāng)服務(wù)器執(zhí)行PATCH請求時(shí)出現(xiàn)一個(gè)或多個(gè)問題,應(yīng)該在響應(yīng)中指定最合適的HTTP狀態(tài)碼??蛻舳艘罁?jù)HTTP規(guī)范解析錯(cuò)誤。

服務(wù)器可以選擇在第一個(gè)問題出現(xiàn)時(shí),立刻終止PATCH 操作,或者繼續(xù)執(zhí)行,遇到多個(gè)問題。例如,服務(wù)器可能多屬性更新,然后返回在一個(gè)響應(yīng)里返回多個(gè)校驗(yàn)問題。

當(dāng)服務(wù)器單個(gè)請求遇到多個(gè)問題,響應(yīng)中應(yīng)該指定最通用可行的HTTP錯(cuò)誤碼。例如,400 Bad Request適用于多個(gè)4xx errors,500 Internal Server Error適用于多個(gè)5xx errors。

服務(wù)器可能會(huì)返回與每個(gè)操作對應(yīng)的錯(cuò)誤對象。服務(wù)器需要指定Content-Type:application/json頭,響應(yīng)體必須包含JSON對象數(shù)組,每個(gè)對象必須遵循JSON API媒體類型 (application/vnd.api+json)。數(shù)組中的響應(yīng)對象,必須是有序,且與請求文檔中的操作相對應(yīng)。每個(gè)響應(yīng)對象應(yīng)該僅包含error對象,當(dāng)錯(cuò)誤發(fā)生時(shí),沒有操作會(huì)完全成功。每個(gè)特定操作的錯(cuò)誤碼,應(yīng)該在每個(gè)error對象 "status" 元素反映。

HTTP 緩存

服務(wù)器可能會(huì)使用遵循HTTP 1.1規(guī)范的HTTP 緩存頭 (ETag, Last-Modified)。

上一篇:URLs下一篇:介紹