亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

RESTful編程到底是什么?

RESTful編程到底是什么?

慕后森 2019-05-30 16:35:54
RESTful編程到底是什么?RESTful編程到底是什么?
查看完整描述

4 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

對基本資源的請求/可能會返回如下內容:

請求

GET?/
Accept:?application/json+userdb

反應

200?OK
Content-Type:?application/json+userdb

{
????"version":?"1.0",
????"links":?[
????????{
????????????"href":?"/user",
????????????"rel":?"list",
????????????"method":?"GET"
????????},
????????{
????????????"href":?"/user",
????????????"rel":?"create",
????????????"method":?"POST"
????????}
????]
}

我們從媒體的描述中得知,我們可以從稱為“鏈接”的部分找到有關相關資源的信息。這叫做超媒體控件。在這種情況下,我們可以從這樣的部分判斷,我們可以通過發出另一個請求來找到一個用戶列表。/user:

請求

GET?/user
Accept:?application/json+userdb

反應

200?OK
Content-Type:?application/json+userdb

{
????"users":?[
????????{
????????????"id":?1,
????????????"name":?"Emil",
????????????"country:?"Sweden",
????????????"links":?[
????????????????{
????????????????????"href":?"/user/1",
????????????????????"rel":?"self",
????????????????????"method":?"GET"
????????????????},
????????????????{
????????????????????"href":?"/user/1",
????????????????????"rel":?"edit",
????????????????????"method":?"PUT"
????????????????},
????????????????{
????????????????????"href":?"/user/1",
????????????????????"rel":?"delete",
????????????????????"method":?"DELETE"
????????????????}
????????????]
????????},
????????{
????????????"id":?2,
????????????"name":?"Adam",
????????????"country:?"Scotland",
????????????"links":?[
????????????????{
????????????????????"href":?"/user/2",
????????????????????"rel":?"self",
????????????????????"method":?"GET"
????????????????},
????????????????{
????????????????????"href":?"/user/2",
????????????????????"rel":?"edit",
????????????????????"method":?"PUT"
????????????????},
????????????????{
????????????????????"href":?"/user/2",
????????????????????"rel":?"delete",
????????????????????"method":?"DELETE"
????????????????}
????????????]
????????}
????],
????"links":?[
????????{
????????????"href":?"/user",
????????????"rel":?"create",
????????????"method":?"POST"
????????}
????]
}

從這個反應中我們可以看出很多。例如,我們現在知道我們可以通過以下方式創建一個新用戶POST使./user:

請求

POST?/user
Accept:?application/json+userdb
Content-Type:?application/json+userdb

{
????"name":?"Karl",
????"country":?"Austria"
}

反應

201?Created
Content-Type:?application/json+userdb

{
????"user":?{
????????"id":?3,
????????"name":?"Karl",
????????"country":?"Austria",
????????"links":?[
????????????{
????????????????"href":?"/user/3",
????????????????"rel":?"self",
????????????????"method":?"GET"
????????????},
????????????{
????????????????"href":?"/user/3",
????????????????"rel":?"edit",
????????????????"method":?"PUT"
????????????},
????????????{
????????????????"href":?"/user/3",
????????????????"rel":?"delete",
????????????????"method":?"DELETE"
????????????}
????????]
????},
????"links":?{
???????"href":?"/user",
???????"rel":?"list",
???????"method":?"GET"
????}
}

我們還知道,我們可以改變現有的數據:

請求

PUT?/user/1
Accept:?application/json+userdb
Content-Type:?application/json+userdb

{
????"name":?"Emil",
????"country":?"Bhutan"
}

反應

200?OK
Content-Type:?application/json+userdb

{
????"user":?{
????????"id":?1,
????????"name":?"Emil",
????????"country":?"Bhutan",
????????"links":?[
????????????{
????????????????"href":?"/user/1",
????????????????"rel":?"self",
????????????????"method":?"GET"
????????????},
????????????{
????????????????"href":?"/user/1",
????????????????"rel":?"edit",
????????????????"method":?"PUT"
????????????},
????????????{
????????????????"href":?"/user/1",
????????????????"rel":?"delete",
????????????????"method":?"DELETE"
????????????}
????????]
????},
????"links":?{
???????"href":?"/user",
???????"rel":?"list",
???????"method":?"GET"
????}
}

注意,我們使用的是不同的HTTP謂詞(GET,?PUT,?POST,?DELETE(等等)為了操縱這些資源,我們認為客戶所掌握的唯一知識就是我們的媒體定義。



查看完整回答
反對 回復 2019-05-30
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

這就是它看起來的樣子。

創建一個具有以下三個屬性的用戶:

POST /user
fname=John&lname=Doe&age=25

服務器響應:

200 OK
Location: /user/123

將來,您可以檢索用戶信息:

GET /user/123

服務器響應:

200 OK
<fname>John</fname><lname>Doe</lname><age>25</age>

若要修改記錄(lnameage將保持不變):

PATCH /user/123
fname=Johnny

更新記錄(因此lnameage將為空):

PUT /user/123
fname=Johnny


查看完整回答
反對 回復 2019-05-30
  • 4 回答
  • 0 關注
  • 949 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號