以往在設計 API,會像以下這個設計,以一個文章列表為例 :
GET - /getArticle // 取得所有文章
POST - /createArticle // 建立新文章
POST - /updateArticle/3 // 更新 id = 3 的文章
POST - /deleteArticle/3 // 刪除 id = 3 的文章
我們把要做什麼事情都定義在 URL了,如果名稱一長確實一時會不太好閱讀,
而 RESTful 規範利用 HTTP 定義的幾種 Method,去對應執行各種不同的動作,
同時也精簡了 URL的名稱,以上 Router 轉換成 RESTful 會長這樣 :
GET /articles // 取得所有文章
POST /article // 建立新文章
PATCH /article/3 // 更新 id = 3 的文章
DELETE /article/3 // 刪除 id = 3 的文章
其實以上的 Method 也就是對應到也是平常寫程式最基本的 CRUD,所以符合設計原則可以說他是 RESTful API 。
C - Create
R - Read
U - Update
D - Delete
如此一來,使用 RESTful API 確實讓 URL,變得更加簡潔,需要執行甚麼動作,僅透過
Method 去相對應做的事情,但 RESTful 也並不是沒有缺點,在取得資料是有相依性的情況,像是取得文章的作者詳細資訊就必須先呼叫 /GET - /articles/{ID}
,在去呼叫 GET - /users/{userID}
,分別發 API 去取得需要的資料,所以接著 GraphQL 就興起解決這類問題,能夠依照條件去進行關聯式的查詢,並回傳需要的資料結構,GraphQL 不懂沒關係,因為本篇主要是講 RESTful,這裡只是提一下 RESTful 有所不足的地方。
Restful 是甚麼?
是一種設計規範,依據 HTTP 定義的各種 Method 可以做相對應的事情
最常被使用的是以下幾種 :
GET - 讀取資料
POST - 新增資料
PATCH/PUT - 修改資料
DELETE - 刪除資料