何謂RESTful開發
REST = RESTful = Representational State Transfer( 表現層狀態轉移)
RESTful API 主要由三種元件組成
Nouns:定義API位置的URL
Verb:定義對資源要做的動作(Get , Post ...)
ContentType:回傳資源呈現方式,如Json之類
通常使用的API會是如
/GetData
/EditData
/InsertData
/DeleteData/1
使用RESTful風格的話則會變成
Get /data
Get /data/1
Post /data
Delete /data/1
目前最常見的方法為下列五種
GET
POST
PUT
PATCH
DELETE
分別對應
取得資料或狀態(登入or員工資料) (safe & idempotent)
新增一筆資料 (新增)
利用更新方式於指定位置新增資料 (新增 並且結果不變) (idempotent)
在現有的資料上更新或者新增資料(編輯)
刪除資料(idempotent)
後面的(safe)或者(idempotent)則代表
safe 操作原本不會更改的資源狀態,可以直接從cache中抓取,省去時間
idempotent 操作不論做幾遍都得到同樣的結果
PUT的額外補充,同樣都跟POST一樣是新增的概念,也同樣可以用於PATCH的概念
但是又包含兩者 也就是說 PATCH的概念是 你新增了一筆資料後,你無法再新增一筆同樣的資料,接著可以對此資料修改
至少我的理解上應該是這樣。
因此使用了RESTful的風格設計,因此會有以下幾點優點跟限制:
1. 有一個唯一的URL表示位置。
2. 無狀態
通常一般的請求狀態為Server和Client端交互資訊,會存在於Server的Session中(如登入狀態)
在Client中發送請求後,Server透過保存在Server中的Session去執行Request。
而無狀態的意思就是由Client自行保存狀態Server不保留,再請求Server中一併交給Server。
比如說 我一次搜尋了一個資料,共有一百筆,但是此頁面一次只能Show50筆
那當我轉到第二頁時,不會再次撈取SQL,而是從Session中拿取
拿個比較直白的說法就是
我只要輸入某個URL 我就可以得到指定的目標資料
3.可以使用更快的效率得到回應(Cachable)
在Server-side,GET過的資源如沒有變更過可以使用Cache,減少Request。
在Client-side,透過Client端cache紀錄版本,若向Server要求資源則會比對Cache,若相同則取用本地
4.分層系統架構
5.客戶端服務器分離
6.充分利用HTTP protocal
7.可執行程式碼的設計,像是JavaScript
參考:https://medium.com/itsems-frontend/api-%E6%98%AF%E4%BB%80%E9%BA%BC-restful-api-%E5%8F%88%E6%98%AF%E4%BB%80%E9%BA%BC-a001a85ab638
https://blog.csdn.net/Jmilk/article/details/50461577
留言
張貼留言