相信大家都十分熟悉網上購物、網上訂座等服務吧,但背後的運作是怎樣的,你知道嗎?靠著API,能將軟件與硬件連結在一起,使我們現時的生活更方便。那甚麼是 API 呢?Restful 又是什麼?
鳴謝鬍子科技學院提供文章
這篇「Restful API 中文教學 – 一文看清 API、CRUD 及Restful」將讓你學會:
- API 的基本原理
- CRUD 的運作
- Restful API 的原理
準備好了嗎? 我們開始吧!
甚麼是 API?
API 全名叫 Application Programming Interface(應用程式介面)。現時,我們只要透過互聯網,用指尖點一點或輸入簡單的文字,在一瞬間,便能夠與世界接觸。例如:我們可以透過網購來購買衣服、透過網絡來購買電影票。究竟背後是怎樣運作的呢?事實上API就是幕後功臣,擔當著郵差的角色,遊走於應用程式(app)、資料庫(database)、裝置(device)之間,互相傳送資料,最後創造連結,並成功為顧客提供服務。

還是不太明白?用網購作例子吧!你在網店上選擇了喜歡的商品後,可以使用信用卡來付款。這個時候,這間網店,就正是連接了信用卡系統,而信用卡系統又連接了你的銀行戶口。這些不同的系統/軟件/硬件,理應不能直接地互動。要讓他們連在一起, 互相溝通,就要透過一個 Interface (介面),那就是 API 了。

看看這幅圖,軟件 A 向軟件 B 發出一個 Request (請求);軟件 B 在接收到 Request 後,就可以作出 Response(回應)。
比方說:我在網頁上,按「買東西」。網頁就會和背後的 Server,發出一個 Request,說要「買東西」。Server在收到這個 Request 後,就可以作出一個 Response, 說「你已成功購買」。

這個就是 API 運作的簡單流程了。
CRUD Operation
網頁對 Server 發出的 Request,通常包含 4 個不同的動作:
- Create
- Read
- Update
- Delete
你懂得 CRUD Operation 後,就已經能做到大部分 Backend(後台)的功能了。
比方說,你是做一個類似 Airbnb 的網頁,網頁上當然會有酒店的資料,因此用家可以:
- Create – 建立新的酒店
- Read – 讀取現有酒店的資料
- Update – 更新現有酒店的資料
- Delete – 刪除現有酒店的資料

這樣的 4 個動作,其實就已經涵蓋了對酒店資料全部的操作。這個就是 CRUD Operation 了。
Restful API
1. API endpoint
要對這些酒店資料進行操作,就需要一個 API endpoint,比方以:https://airbnb.com/api/hotels 為例。
https://airbnb.com/api/ 是我們的網址,而 hotels 就是我們要進行操作的資料,我們稱為 Resources。在這個例子 hotels就代表酒店資料了。

2.CRUD Operation
在做 Crud Operation 前,我們先要知道 4 種通用的 HTTP Methods,它們分別是:
- GET – 讀取資料
- POST – 新增資料
- UPDATE – 更新資料
- DELETE – 刪除資料

利用 Restful 架構,我們就可以進行 CRUD Operation。
Create:建立新的酒店的話,我們會使用 http method POST 到這個 API endpoint, 並附上這個新建的酒店資料。成功的話,我們就會收到這個新的酒店資料,作為 Response。

Read:讀取全部酒店資料的話,我們會使用 http method GET 到這個 API endpoint。成功的話,我們就會收到全部酒店資料 (一堆Array), 作為 Response。

Read:讀取個別酒店資料的話,我們會使用 http method GET 到這個 API endpoint,加上這個酒店的 id。成功的話,我們就會收到這間酒店資料,作為 Response。

Update :更新現有酒店的資料的話,我們會使用 http method PUT 到這個 API endpoint,並附上要更新資料的酒店id,及要更改的酒店資料。成功的話,我們就會收到這個已更新的酒店資料,作為 Response。

Delete :刪除現有酒店的資料的話,我們會使用 http method DELETE 到這個 API endpoint,並附上要刪除的酒店的id。

由此可見,Restful API 只會有 5 條,它們分別是:
- POST /api/hotels
- GET /api/hotels
- GET /api/hotels/1
- PUT /api/hotels/1
- DELETE /api/hotels/1
利用以上 API 就可以控制全部酒店資料了,非常方便。
結語
好了!以上就是 API,CRUD,Restful API 的介紹,希望對你有用!
你也可以上 Youtube 觀看《什麼是API?CRUD?Restful API 又是什麼?》:
[教學] 以 YouTube Data API 擷取 YouTube 影片資訊 [Ruby on Rails]