1、面向資源:
每個資源都有專人負(fù)責(zé),我們可以直接面向資源操作。
/orders
{
"addOrder": {
"orderName": "H&M"
}
}
斜杠和orders表示我們這個請求是發(fā)給哪個資源的,訂單是一種資源,我們可以理解為是衣服制作工廠專門管理訂單的人,他可以幫我們處理所有有關(guān)訂單的操作,包括新增訂單、修改訂單、取消訂單等操作
注:面向資源,對構(gòu)建可伸縮、分布式的架構(gòu)至關(guān)重要的。同時,如果面向資源使用的數(shù)據(jù)格式是Xml,那么其實就是SOAP,SOAP的特點是關(guān)注行為和處理,和面向資源的RESTful有很大的不同。
2、給請求打上標(biāo)簽
新增資源的請求,都在請求上面寫上大大的‘POST’,表示這是一筆新增資源的請求
查詢類的請求,用‘GET’表示
刪除類的請求,用‘DELETE’表示”
修改類的請求,修改分為兩種:
第一種,如果這個修改,無論發(fā)送多少次,最后一次修改后的資源,總是和第一次修改后的一樣,比如更改訂單的衣服的款式,那么用‘PUT’表示
第二種,如果這個修改,每次修改都會讓這個資源和前一次的不一樣,比如是訂單中加一件衣服,那么這種請求用‘PATCH’或者‘POST’表示
以上使用了HTTP動詞,GET/PUT/POST/DELETE/PATCH....,這些都是HTTP的規(guī)范,規(guī)范的作用自然是重大的,用戶看到一個POST請求,就知道它不是冪等的,使用時要小心,看到PUT,就知道他是冪等的,多調(diào)用幾次都不會造成問題
3、在請求中同時返回所有可以對此所做的操作及如何操作,比如告訴請求者如何刪除訂單
在請求中返回可以做哪些操作,這種操作叫HATEOAS(Hypertext As The Engine Of Application State),中文翻譯為“將超媒體格式作為應(yīng)用狀態(tài)的引擎”,核心思想就是每個資源都有它的狀態(tài),不同狀態(tài)下,可對它進(jìn)行的操作不一樣。理解了這一層,REST的全稱,Representational State Transfer,中文“表述性狀態(tài)轉(zhuǎn)移”就容易理解多了。
這種設(shè)計的Restful API,給使用者帶來很大的便利:
使用者只需要知道如何獲取資源的入口,之后的每個URI都可以通過請求獲得,無法獲得就說明無法執(zhí)行那個請求。
做到了面向資源和使用Http動詞,就已經(jīng)很Restful了。Restful本身也不是一種規(guī)范,Restful風(fēng)格來稱呼更合適一些。