何謂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





留言

這個網誌中的熱門文章

無法載入檔案或組件 'System.IO.Compression' 或其相依性的其中之一。

MongoDB 入門

javascript 更改屬性及創建標籤