# RESTful API ###### tags:`補充` ## API 是什麼? API,全名 Application Programming Interface (應用程式介面),簡單來說,就是==溝通介面一種接口==。API 就是你的餐廳服務生、網址、DOM ## 一般的 API,可能會是這樣: 獲得資料GET /getData 新增資料POST /createData 刪除資料DELETE /deleteData/1 ``` 獲取使用者資料 /getAllUsers 獲取使用者資料 /getUser/1 新增使用者資料 /createUser 更新使用者資料 /updateUser/1 刪除使用者資料 /deleteUser/1 ``` 一般的 API沒有統一的命名方式,造成在引用各家 API 時,都需要詳讀 API 文件,理解所有設計命名規則後,才可使用。 ## REST 全名 Representational State Transfer( 表現層狀態轉移),統一的命名方式,他是一種設計風格,並不是一種標準。 ==運用 HTTP 來表達語義的路由設計==風格稱為 RESTful API。 ### 其他的 HTTP Method GET 讀取資源 POST 新增資源 PUT 替換資源 PATCH 更換資源部分內容 DELETE 刪除資源 OPTIONS 回傳該資源所支援的所有 HTTP 請求方法 CONNECT 將連線請求轉換至 TCP/IP 隧道 ## 若以 RESTful API 風格開發的話: RESTful 風格的網址設計強調從路由結構就能看出要對什麼資料、進行什麼操作。 ``` 瀏覽全部資料:GET + 資源名稱 瀏覽特定資料:GET + 資源名稱 + :id 新增一筆資料:POST + 資源名稱 修改特定資料:PUT + 資源名稱 + :id 刪除特定資料:DELETE + 資源名稱 + :id ``` ## 兩者差異 在於 RESTful API 充分地使用了 HTTP protocol (GET/POST/PUT/DELETE),達到: * 以直觀簡潔的資源 URI==更容易被人類理解==更簡短 * 並且善用 HTTP Verb達到對資源的操作 * 並使用 Web 所接受的資料類型: JSON, XML, YAML 等,最常見的是 JSON [[API] (1) - 定義 1 - 什麼是 REST/RESTful ?](https://ithelp.ithome.com.tw/articles/10157431) [什麼是REST? 認識 RESTful API 路由語義化設計風格](https://tw.alphacamp.co/blog/rest-restful-api) ### 身為專案的架構者,有時候還是需因地制宜,風格只是參考不是阻礙 登入 的路由通常設定為 POST /login,就完全是以動詞為中心。 ![](https://i.imgur.com/ePsCBQD.png) [什麼是REST? 認識 RESTful API 路由語義化設計風格](https://tw.alphacamp.co/blog/rest-restful-api) ### [RESTful 程式範例](https://hackmd.io/3imYbrNiTp20YB4Igzh7KA)