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
(等等)為了操縱這些資源,我們認為客戶所掌握的唯一知識就是我們的媒體定義。

白衣非少年
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>
lname
age
PATCH /user/123 fname=Johnny
lname
age
PUT /user/123 fname=Johnny
添加回答
舉報
0/150
提交
取消