關於 API Gateway
現今的網路服務提供各式各樣的功能,包括地圖、天氣和圖片服務,以及遊戲、拍賣等許多其他類型的服務。服務供應商可選擇多種方式來實作、部署及管理服務。舉例來說,某項服務可能以 Java 或 .NET 開發,另一項則使用 Node.js。
單一服務供應商的後端實作方式也可能有所不同。服務供應商可能使用某種架構實作舊版服務,並使用完全不同的架構實作新服務。
無論實作方式為何,網頁式服務都需要提供方法,讓應用程式開發人員使用服務。這些服務通常會公開為一組 HTTP 端點。視服務而定,端點也可能會將 XML 或 JSON 格式的資料傳回給用戶端應用程式。
關於 Google Cloud 服務
在 Google Cloud上開發服務時,您可以選擇多種服務實作方式,例如 Cloud Run 函式、Cloud Run 和 App Engine 標準環境。 Google Cloud 的彈性代表您可以根據服務需求選擇正確的後端架構。
應用程式開發人員是後端服務的客戶。應用程式開發人員會使用您的服務,為行動裝置或平板電腦實作應用程式,方法包括透過在瀏覽器中執行的應用程式,或透過任何其他可提出服務要求的應用程式。
透過網路公開服務可能很困難。如要成功,服務供應商必須:
- 驗證服務存取權
- 確保用戶端與服務之間的資料傳輸安全
- 防範惡意攻擊
- 隨著用量增減調整服務規模
- 為後端作業團隊提供監控及追蹤服務用量的管道
- 追蹤用量,提供準確的帳單資訊
此外,如果服務使用不同的介面和通訊協定,應用程式開發人員存取這些服務時可能會遇到困難。開發人員不僅要學習及瞭解各項服務介面,還必須監控不同服務的變更,然後視需要更新及重新部署應用程式。
API Gateway
API Gateway 透過明確定義的 REST API,讓您為服務提供安全的存取機制。無論服務實作機制為何,都能確保存取方式一致。一致的 API 可帶來下列好處:
- 方便應用程式開發人員使用您的服務
- 可讓您變更後端服務實作,而不影響公開 API
- 讓您充分運用 Google Cloud內建的擴充、監控和安全性功能
下圖顯示應用程式開發人員透過 API Gateway 向後端服務提出要求:
應用程式開發人員可透過 API Gateway 使用 REST API,實作應用程式。由於所有 API 都託管在 API Gateway 上,應用程式開發人員可透過一致的介面存取所有後端服務。
在 API Gateway 上部署 API 後,您就能更新後端服務,甚至將服務從一個架構移至另一個架構,而不必變更 API。只要服務的 API 保持一致,應用程式開發人員就不必因為後端基礎架構變更而修改已部署的應用程式。
API Gateway 是分散式 API 管理系統,也提供託管、記錄、監控及其他多項功能,可協助您建立、共用、維護及保護 API。API Gateway 原生即與 Google Cloud 整合,並負責處理並行 API 呼叫時的所有工作,包括流量管理、授權和監控。
什麼是 API?
API 是一種介面,可讓一個應用程式使用另一個應用程式的功能或資料。API 可定義穩定且說明文件齊全的進入點,讓開發人員存取及重複使用其他開發人員建構的應用程式邏輯。
舉例來說,下表說明可傳回書籍資訊的 REST API 範例:
| 屬性 | 值 | 說明 |
|---|---|---|
| 網址 | https://www.mybooksapi.com/books/info | 根據國際標準書號 (ISBN) 傳回書籍的書名、作者和出版日期。 |
| HTTP 動詞 | GET | 對 API 提出 GET 要求。 |
| 查詢參數 | isbn
|
傳遞書籍的 ISBN 編號,也就是書籍的 ID。 |
| 回應資料 | {
"title" : "book_title",
"author" : "author_name",
"published" : "publish_date"
} |
內含書籍詳細資料的 JSON 物件。 |
| 回應代碼 | 200 | 要求成功。 |
以下提供 curl 要求範例,可用於取得指定 ISBN 編號的書籍資訊:
curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217
由於這項服務具有明確定義的 API,包括資料格式和 HTTP 回應碼的說明,應用程式開發人員不需要瞭解後端服務的基礎實作方式。
由於使用 API 的應用程式對變更很敏感,因此 API 也代表 API 提供者與 API 消費者之間的合約。合約可確保 API 會以可預測的方式變更。舉例來說,書籍 API 可能會更新,新增 title 或 author 等其他查詢參數,或變更回應 JSON,新增書籍的其他資訊。
定義 API
您可將部署在 API Gateway 上的 API 定義為 OpenAPI 2.0 規格。API 定義的主要元件包括:
- 後端服務的網址或進入點
- 傳送至 API 的要求中包含的任何資料格式
- 服務在 API 回應中傳回的任何資料格式
- 用於控管服務存取權的驗證機制
定義 API 後,請使用 gcloud 指令列介面,將 API 上傳至 Google Cloud的 API 設定:
在 API Gateway 上部署 API 設定
如要建立 API,請在 API Gateway 上部署 API 設定。
使用 gcloud 指令部署 API 設定:
部署 API 設定後,用戶端就能對 API 進行 REST 呼叫。
管理 API
部署及執行後,您可以監控 API 活動,例如使用指標和記錄。當用戶端向您的 API 提出要求時,API Gateway 會記錄要求和回應的相關資訊。API Gateway 也會追蹤延遲、流量和錯誤。
隨著時間推移,您可能需要更新已部署的 API,以新增功能、提升效能或修正 API 問題。如要更新已部署的 API,請更新 API 定義的 OpenAPI 規格,然後上傳並重新部署 API。
控管 API 存取權
API Gateway 可讓您將 API 設定為必須先通過驗證,用戶端才能存取 API。API Gateway 支援與 Cloud Endpoints 相同的驗證機制和語法,包括使用:
您也可以使用 Google Cloud 控制台與其他開發人員共用 API,讓他們啟用 API 並產生 API 金鑰來呼叫該 API。
除了定義驗證機制來驗證使用者身分,API 也需要決定通過驗證的使用者可以對 API 進行哪些操作。詳情請參閱「Google 的驗證方式」。