大型語言模型(LLM)、GenAI 和 ChatGPT 等熱門技術詞彙已經成為我們日常對話中的常客,幾乎人人都在間接或直接的使用它們。為什麼? 企業發布了 「API」 後,我們又能站在巨人的肩膀上,開發更強大的產品和服務…

API
是什麼?
API(Application Programming Interface,應用程式介面),簡單理解就是,我們不需要知道它實際如何運作,只要知道怎麼使用它。 就算不懂模型如何製作出來的,我更在意這個模型可以幫助我們在產品上的加值。因此會更在意:「輸入的方法」以及「輸出的結果」。
如何運作?
還是要簡單理解一下 HTTP,全名 Hypertext Transfer Protocol(超文本傳輸協定),是一種傳輸協定,需要用一定規格的語言來溝通。HTTP 就是用戶端和伺服器端之間的傳輸協定,如果用生活例子來理解會更好懂:
「去手搖店點一杯飲料」,步驟是這樣:
使用者打開瀏覽器,輸入網址按下 enter (我跟店員點了珍珠奶茶)
伺服器收到瀏覽器的 request,檢查該網址是否存在(店員先確定珍珠奶茶還沒賣完)
伺服器發送 response 給客戶端(店員把珍珠奶茶做好之後,拿給我)
以上可能有其他存在情境,對吧? 例如,賣完了、需要無糖去冰、更改或取消等,這些規範包含:
Method:包括 GET(獲取)、POST(提交)、PUT(更新)、DELETE(刪除),告訴伺服器對資源執行的具體操作。就像你在手搖店,你可能要點品項、取消品項或更改品項等。
Status code:告訴客戶端請求是成功還是失敗,以及具體的失敗原因。常見的狀態碼包括 200(成功)、404(未找到)、500(伺服器錯誤)。這如同店員告訴你「珍珠奶茶準備好了」或「珍珠奶茶賣完了」。
Headers:HTTP request 和 response 也包含例如內容類型 (Content-Type),描述了傳送數據的格式(如 application/json)
Stateless:HTTP 是一個無狀態的協議,是指每個請求之間是獨立的,伺服器不會記住之前的請求。就像每次去飲料店,員工還是要問你要喝什麼。如果需要持續追蹤顧客的偏好,飲料店需要額外的記錄系統;同理,網站會使用 cookies 或 session 來「記住」用戶的設定或登入狀態。
Restful & Restful API
REST,全名 Representational State Transfer (表現層狀態轉移),它是一種「設計風格」,因此,以此規範設計的 API,稱為 RESTful API,又為遵循著 REST 架構風格的 API。
描述了如何實現 Web API 的架構,基於 HTTP 協定,用來建立分散式系統,並支援多種程式語言,他的優點包含:
可擴展性:系統無需保留 Client 狀態,因此可以提高擴展效能。就像連鎖快餐店不需要記住每位客人的喜好,也能應對客流增加。
靈活性:由於 Client 與 Server 完全分離,代表開發團隊可以只更新網站的前端或後端。
獨立性:開發者可以使用不同的程式語來寫,而不會影響API的整體設計。就像使用樂高積木搭建,可以選擇不同顏色和形狀的積木。

URL endpoint : 這是一個網址連結,代表我們想訪問的資源。
HTTP verb : 對 URL endpoint 的資源進行何種操作。
Status codes : 伺服器接收 RESTful HTTP 請求後,除請求資源外,會回傳 HTTP 狀態碼。
舉例來說,如果你在使用一個購物網站的 API 來查詢產品,一個 Restful 的 API 可能會這樣設計:
| HTTP verb | URL endpoint | 描述 |
|---|---|---|
| GET | /products | 獲取所有商品列表 |
| GET | /products/{id} | 獲取特定商品資訊 |
| POST | /products | 新增商品 |
| PUT | /products/{id} | 更新特定商品資訊 |
| DELETE | /products/{id} | 刪除特定商品 |
你知道 Postman 嗎?
Postman 是開發與測試 API 的必備工具!無論是進行基本的 CRUD API 測試,還是需要包含 Header 資訊的複雜請求(比如帶 token 的身份驗證),當然也可以測試上傳/下載檔案 API。
References:
https://www.explainthis.io/zh-hant/swe/restful-api
https://mannhowie.com/rest-api
https://www.postman.com/what-is-an-api/#benefits-of-apis