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>
lnameage
PATCH /user/123 fname=Johnny
lnameage
PUT /user/123 fname=Johnny
添加回答
舉報
0/150
提交
取消
