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

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

創(chuàng)建,更新,刪除資源

服務器可能支持資源獲取,創(chuàng)建,更新和刪除。

服務器允許單次請求,更新多個資源,如下所述。多個資源更新必須完全成功或者失敗,不允許部分更新成功。

任何包含內(nèi)容的請求,必須包含Content-Type:application/vnd.api+json請求頭。

創(chuàng)建資源

支持資源創(chuàng)建的服務器,必須支持創(chuàng)建單獨的資源,可以選擇性支持一次請求,創(chuàng)建多個資源。

向表示待創(chuàng)建資源所屬資源集的URL,發(fā)出POST請求,創(chuàng)建一個或多個資源。

創(chuàng)建單獨資源

創(chuàng)建單獨資源的請求必須包含單一主要資源對象。

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

POST /photos
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "photos": {
    "title": "Ember Hamster",
    "src": "http://example.com/images/productivity.png"
  }
}

創(chuàng)建多個資源

創(chuàng)建多個資源的請求必須包含主要主要資源集合。

例如,多個photos通過如下請求創(chuàng)建:

POST /photos
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

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

響應

201 狀態(tài)碼

服務器依據(jù)HTTP semantics規(guī)范,響應成功的資源創(chuàng)建請求。

當一個或多個資源創(chuàng)建成功,服務器返回201 Created狀態(tài)碼。

響應必須包含Location頭,用以標示請求創(chuàng)建所有資源的位置。

如果創(chuàng)建了單個資源,且資源對象包含href鍵,Location URL必須匹配href值。

響應必須含有一個文檔,用以存儲所創(chuàng)建的主要資源。如果缺失,客戶端則判定資源創(chuàng)建時,傳輸?shù)奈臋n未經(jīng)修改。

HTTP/1.1 201 Created
Location: http://example.com/photos/550e8400-e29b-41d4-a716-446655440000
Content-Type: application/vnd.api+json

{
  "photos": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "href": "http://example.com/photos/550e8400-e29b-41d4-a716-446655440000",
    "title": "Ember Hamster",
    "src": "http://example.com/images/productivity.png"
  }
}

其它響應

服務器可能使用其它HTTP錯誤狀態(tài)碼反映錯誤??蛻舳吮仨氁罁?jù)HTTP規(guī)范處理這些錯誤信息。如下所述,錯誤細節(jié)可能會一并返回。

客戶端生成 IDs

請求創(chuàng)建一個或多個資源時,服務器可能接受客戶端生成IDs。IDs必須使用"id"鍵來指定,其值必須正確生成,且為格式化的UUID

例如:

POST /photos
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "photos": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "title": "Ember Hamster",
    "src": "http://example.com/images/productivity.png"
  }
}

更新資源

支持資源更新的服務器必須支持單個資源的更新,可以選擇性的支持單次請求更新多個資源。

向表示單獨資源或多個單獨資源的URL發(fā)出PUT請求,即可進行資源更新。

更新單獨資源

為更新單獨資源,向表示資源的URL發(fā)出PUT請求。請求必須包含一個頂層資源對象。

例如:

PUT /articles/1
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "articles": {
    "id": "1",
    "title": "To TDD or Not"
  }
}

更新多個資源

向表示多個單獨資源(不是全部的資源集合)的URL發(fā)出PUT請求,即可更新多個資源。請求必須包含頂層資源對象集合,且每個資源具有“id"元素。

例如:

PUT /articles/1,2
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "articles": [{
    "id": "1",
    "title": "To TDD or Not"
  }, {
    "id": "2",
    "title": "LOL Engineering"
  }]
}

更新屬性

要更新資源的一個或多個屬性,主要資源對象應該只包括待更新的屬性。資源對象缺省的屬性將不會更新。

例如,下面的PUT請求,僅會更新article的titletext屬性。

PUT /articles/1
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "articles": {
    "id": "1",
    "title": "To TDD or Not",
    "text": "TLDR; It's complicated... but check your test coverage regardless."
  }
}

更新關聯(lián)

更新單對象關聯(lián)

單對象關聯(lián)更新,可以在PUT請求資源對象中包含links鍵,從而與其它屬性一起更新。

例如,下面的PUT請求將會更新article的titleauthor屬性:

PUT /articles/1
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "articles": {
    "title": "Rails is a Melting Pot",
    "links": {
      "author": "1"
    }
  }
}

若要移除單對象關聯(lián),指定null作為值即可。

另外,單對象關聯(lián)也可以通過它的關聯(lián)URL訪問。

向關聯(lián)URL發(fā)出帶有主要資源的POST請求,即可添加單對象關聯(lián)。

例如:

POST /articles/1/links/author
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "people": "12"
}

向關聯(lián)URL發(fā)出DELETE請求,即可刪除單對象關聯(lián)。例如:

DELETE /articles/1/links/author

更新多關聯(lián)對象

更新多對象關聯(lián),可以在PUT請求中資源對象包含links鍵,從而與其它屬性一起更新。

例如,下面PUT請求完全替換article的tags。

PUT /articles/1
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "articles": {
    "id": "1",
    "title": "Rails is a Melting Pot",
    "links": {
      "tags": ["2", "3"]
    }
  }
}

若要移除多對象關聯(lián),指定空數(shù)組[]為值即可。

在分布式系統(tǒng)中,完全替換一個數(shù)據(jù)集合并不總是合適。替換方案是允許單獨的添加或移除關聯(lián)。

為促進細化訪問,多對象關聯(lián)也可以通過關聯(lián)URL訪問。

向關聯(lián)URL發(fā)出帶有主要資源的POST請求,即可添加多對象關聯(lián)。

POST /articles/1/links/comments
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "comments": ["1", "2"]
}

向關聯(lián)URL發(fā)出DELETE請求,即可刪除多對象對象關聯(lián)。例如:

DELETE /articles/1/links/tags/1

向關聯(lián)URL發(fā)出DELETE請求,即可刪除多個多對象對象關聯(lián)。例如:

DELETE /articles/1/links/tags/1,2

響應

204 No Content

如果更新成功,且客戶端屬性保持最新,服務器必須返回204 No Content狀態(tài)碼。適用于PUT請求,以及僅調整links,不涉及其它屬性的POST, DELETE請求。

200 OK

如果服務器接受更新,但是在請求指定內(nèi)容之外做了資源修改,必須響應200 OK以及更新的資源實例,像是向此URL發(fā)出GET請求。

其它響應

服務器使用其它HTTP錯誤狀態(tài)碼反映錯誤??蛻舳吮仨氁罁?jù)HTTP規(guī)范處理這些錯誤信息。如下所述,錯誤細節(jié)可能會一并返回。

資源刪除

向資源URL發(fā)出DELETE請求即可刪除單個資源。

DELETE /photos/1

服務器可以選擇性的支持,在一個請求里刪除多個資源。

DELETE /photos/1,2,3

響應

204 No Content

如果刪除請求成功,服務器必須返回204 No Content 狀態(tài)碼。

其它響應

服務器使用其它HTTP錯誤狀態(tài)碼反映錯誤??蛻舳吮仨氁罁?jù)HTTP規(guī)范處理這些錯誤信息。如下所述,錯誤細節(jié)可能會一并返回。

上一篇:Errors下一篇:文檔結構