API 是 Application Programming Interface 的縮寫,API中文是「應用程式介面」。這篇帶你認識 Web API 和 HTTP 的關係,從客戶端和伺服器端來瞭解網路 API 的角色。以及在使用 Web API 交換資料時,常見的資料交換格式 JSON 。
什麼是API
以下是維基百科對 API 的定義:在電腦程式設計裡,應用程式介面 (API) 是用於打造應用程式軟體的一組副程式定義、協定與工具。一般而言,API 是指各種軟體組件之間一套明確定義的溝通方法。好的 API 提供模塊,並且由工程師將它們組合在一起,如此一來讓寫程式變得更簡單。
兩個主體溝通的交接點——介面
在認識 API 以前,讓我們來認識介面 (Interface)。
「介面」是兩個主體溝通的交接點:
「人」作為一個主體,如果人要去使用機械、物品或是應用軟體,人無法直接和這些東西進行互動,因此需要有一個「介面」,來讓兩個主體之間可以溝通。
例如,如果今天「人」想要請收音機播放自己想聽的電台節目,可以透過收音機上的調頻按鈕來設定頻道,讓收音機播送電台節目;或者,如果今天「人」想要請咖啡機泡咖啡,人可以透過咖啡機的控制面板來啟動機器的泡咖啡程序。
在上述例子裡,收音機的調頻按鈕和咖啡機的控制面板即為人機互動的「介面」。
如果今天人要和應用軟體互動,例如 Google Maps,Google Maps 系統裡儲存著大量的地理資訊,可以供人查詢。而人需要在網頁上的輸入框輸入地址,系統才能得知人想要查詢的地址,因而進入資料庫搜尋,並將結果回傳到網頁上讓人閱讀。
在這個例子中,Google Maps 的前端網頁扮演了介面的角色。
延伸閱讀:API 開發、測試、除錯一次到位!使用 MSW 快速上手 Mock API
Web API 與 HTTP
在 Web Application 的開發情境下的 API 被稱為 Web API,在 Web API 作用時,客戶端和伺服器端會透過 HTTP 通訊協定來進行請求與回應。
使用 Web API 的一方是客戶端,可能是瀏覽器、手機或者穿戴式設備等等,客戶端會向伺服器端發出請求,要求執行某個 CRUD 動作。
伺服器端會依照客戶端的請求內容,經過內部的處理程序後,將結果回應給客戶端。
你有可能扮演客戶端的一方,也有可能是伺服器端。
Web API 與你
客戶端:串接他人開發的 Web API
作為開發者,你會常常需要使用第三方開發的 Web API:
這時候,做為客戶端,你會向 Web API 伺服器發送請求。
舉個例子,假設你現在是個開發餐廳網頁的工程師,你需要在餐廳網頁上放入 Google Maps 地圖資料,你會經歷以下步驟:
- 登入 Google Map API 的官方網站,找到你要使用的 API。
- 閲讀 Google Map API 的文件,了解如何使用 Google Maps API。
- 註冊 Google Maps API 帳號,並且取得金鑰 (Key) 通過驗證。
- 取得金鑰 (Key) 後,就可以將 Google Maps API 提供的 API 放進自己的專案,API 的呈現會是一組程式碼,你需要自行改寫其中的 Key 和地址。
- 完成程式碼改寫之後,就可以在網頁中讀取 Google Maps 的地圖了。
餐廳網頁作為一個客戶端,可以透過 Google Maps 提供的 Web API,從 Google Maps 的資料庫取得自家餐廳所在位置的地圖,傳遞到網頁裡展示。
伺服器端:開發 Web API 給他人使用
你也有可能做為伺服器端,將你擁有的資料庫開放給第三方使用:
延續著 Google Maps API 的例子,這次我們想像自己是 Google Maps 的開發團隊,我們決定將手上龐大的地圖資料 OpenSource,意即我們將開放 API 供他人使用,步驟可能會是這樣:
- 撰寫一個明確的 API 文件,清楚定義 API 的使用方式及格式等等。
- 按照文件開發一個 Web API,也就是在 Google Maps 系統上開發可供外部呼叫的方法 (method),用這個方式做為使用介面。
以上是 Web API 的初步說明,為了建立實際的體會,接下來教案會帶你實際去使用他人的 Web API,並為自己的專案開發 Web API。
HTTP 通訊協定
HTTP (HyperText Transfer Protocol) 是通訊協定 (Transfer Protocol) 的一種,通訊協定制定了規則和標準,讓設備之間不但能認出彼此,也能夠根據不同情境選擇溝通的方式,而 HTTP 是專門用於瀏覽器與伺服器之間的通訊協定。
URL + Parameter
你需要先知道正確的 HTTP Verb 和 URL,才能使用正確的動詞對 URL 發出請求。
Request Format
根據 HTTP 規範,伺服器端和客戶端進行請求與回應時,會使用定義明確的請求格式 (request format) 和回應格式 (response format)。
Request format 指的是,客戶端需要使用特定的 HTTP 動詞,對 URL 發出請求。Rails 採用的 RESTful 風格就是一種 request format。
Response Format
Response format 是指伺服器端回應時採用的資料格式,可能會是:XML、JSON、Protocol Buffers、Thrift、YAML 等等。
JSON 是最常用的回應格式之一,各種程式語言都可以產生或解析 JSON 字串
運用 HTTP 來表達語義的路由設計風格稱為 REST API,好用的 API 工具:
- REST API 測試工具: Postman
Postman 是一個用於構建和使用 API 的 API 平台。Postman 簡化了 API 生命週期的每個步驟並簡化了協作,因此您可以更快地創建更好的 API。
- API 設計工具:Swagger
Swagger是一套為API開發者設計的開源專業工具,幫助簡化用戶、團隊和企業的 API 開發。
- API測試自動化工具:Katalon
API 自動化測試對於產品質量和 CI/CD 流程至關重要。與 GUI 測試不同,API 測試可以應對較短的發布週期和頻繁的更改——而不會破壞測試輸出。Katalon 支持所有類型的 REST、SOAP/1.1 和 SOAP/1.2 請求。您的測試可以從 Swagger、Postman 和 WSDL 導入。
- SOAP 和 REST API測試工具:SoapUI
SoapUI是用於簡單對象訪問協議(SOAP) 和表示狀態傳輸(REST)的開源 Web 服務測試應用。它的功能包括Web服務檢查、調用、開發、模擬和模擬、功能測試、負載和合規性測試。
JavaScript 全端開發課程,16 週進度班帶你半年轉職工程師