認識 API 與 Web API ,實用的 API 工具

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

想成為網頁開發工程師,3 分鐘小測驗,找到你的學習起點

Web API 與 HTTP

在 Web Application 的開發情境下的 API 被稱為 Web API,在 Web API 作用時,客戶端和伺服器端會透過 HTTP 通訊協定來進行請求與回應。

client端與server端情求回應

使用 Web API 的一方是客戶端,可能是瀏覽器、手機或者穿戴式設備等等,客戶端會向伺服器端發出請求,要求執行某個 CRUD 動作。

伺服器端會依照客戶端的請求內容,經過內部的處理程序後,將結果回應給客戶端。

你有可能扮演客戶端的一方,也有可能是伺服器端。

Web API 與你

客戶端:串接他人開發的 Web API

作為開發者,你會常常需要使用第三方開發的 Web API:

人與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 map api

餐廳網頁作為一個客戶端,可以透過 Google Maps 提供的 Web API,從 Google Maps 的資料庫取得自家餐廳所在位置的地圖,傳遞到網頁裡展示。

伺服器端:開發 Web API 給他人使用

你也有可能做為伺服器端,將你擁有的資料庫開放給第三方使用:

api開發者給需要api工程師

延續著 Google Maps API 的例子,這次我們想像自己是 Google Maps 的開發團隊,我們決定將手上龐大的地圖資料 OpenSource,意即我們將開放 API 供他人使用,步驟可能會是這樣:

  • 撰寫一個明確的 API 文件,清楚定義 API 的使用方式及格式等等。
  • 按照文件開發一個 Web API,也就是在 Google Maps 系統上開發可供外部呼叫的方法 (method),用這個方式做為使用介面。
api開發步驟

以上是 Web API 的初步說明,為了建立實際的體會,接下來教案會帶你實際去使用他人的 Web API,並為自己的專案開發 Web API。

HTTP 通訊協定

HTTP (HyperText Transfer Protocol) 是通訊協定 (Transfer Protocol) 的一種,通訊協定制定了規則和標準,讓設備之間不但能認出彼此,也能夠根據不同情境選擇溝通的方式,而 HTTP 是專門用於瀏覽器與伺服器之間的通訊協定。

URL + Parameter

你需要先知道正確的 HTTP Verb 和 URL,才能使用正確的動詞對 URL 發出請求。

url parameter

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 工具:

Postman 是一個用於構建和使用 API 的 API 平台。Postman 簡化了 API 生命週期的每個步驟並簡化了協作,因此您可以更快地創建更好的 API。

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 週進度班帶你半年轉職工程師