Restful
Rest 指的是網路框架, ful 指的是 Beautiful ,因為 api 設計每個人風格都不一樣,所以出現了 Restful , 他並不是一種標準或規範,只是一種設計風格。
Restful 善用 HTTP 動詞 (Post、Get) 與 HTTP 回傳狀態碼 ( 200、404) :
HTTP 動詞
即 Get、Post、Put、Delete 等動詞,可以根據動詞對相同 Url 做不同的操作
- Get – 取得資料
- Post – 新增資料
- Put – 更新資料
- Delete – 刪除資料
- 等…
舉例來說
- [Get ]api/classes – 取得所有班級
- [Post]api/classes – 建立班級
- [Get ]api/classes/{Id} – 取得指定 {ID} 的班級
- [Put ]api/classes/{Id} – 更新 {ID} 的班級
- [Delete]api/classes/{Id} – 刪除 {ID} 的班級
更進一步,可以設計班級裡面的學生
- [Get ]api/classes/{Id}/students – 取得 {ID} 班級底下的所有學生
- [Get ]api/classes/{Id}/students/{studentId} – 取得 {ID} 班級底下的 {studentId} 資料
或者使用參數查詢 :
- [Get ]api/classes?name=xxx – 取得班級名稱包含xxx的所有班級
與 Swagger 及 Postman 配合使用的範例
- Swagger 是 Web API 的文件產生工具,可以建立符合 Restful 的 API 清單

- 這邊使用一個 Message 訊息的功能,裡面只有 Id、Name、Content 三個參數

使用 Postman 操作 API 進行 CRUD :
- Postman 是一個 測試伺服器回傳的工具,可以避免開發人員需要特別寫程式才能測試 API
使用 Get 可以取得資料清單,資料為空時,會回傳 []

Post 建立資料,會回傳新建的資料與 Id

使用 Get 取得資料確認有建立

使用 Get 取得指定{ Id }資料

使用 Put 更新資料

因為只有傳遞 Id 與 Content 所以資料的 Name 將會變成 Null,如果只想要局部更新,則可以實作 Patch 這個 HTTP 動詞

使用 Delete 刪除資料

再次使用 Get 取得資料,確認資料已被清空 :

HTTP 回傳狀態碼
網站的狀態碼,當你使用 HTTP 回傳狀態碼時,js程式可以根據回傳情況處理 :
- 2xx – 成功
- 3xx – 重新導向
- 4xx – 用戶端錯誤
- 5xx – 伺服器內部錯誤
以前沒有規範時,有時回傳的訊息,會有人特別做一個 flag 作為當伺服器失敗的回傳,但實際上,使用狀態碼可以更容易區分 :
$.ajax({
url: '{url}',
type: 'post',
data: data,
success: function(){
alert('success!');
},
error: function(){
alert('error!');
}
});
如 JQuery 的 Ajax 也區分了 success 與 error ,可以根據情況進行不同的處理。
