什麼是 API 網關?
API 網關是與實際後端服務或數據交互的流量管理器,並對 API 調用應用策略、身份驗證和一般訪問控制以保護有價值的數據。 API 網關是您控制對後端系統和服務的訪問的手段,它旨在優化外部客戶端和後端服務之間的通信,為您的客戶提供無縫體驗。 API 網關可確保服務的可擴展性和高可用性。它負責將請求發送到適當的服務並將回復發送回請求者。 API 網關可維護您的數據和 API 之間的安全連接,並管理您公司內部和外部的 API 流量和請求,包括負載平衡。網關對 API 調用應用策略、身份驗證和一般訪問控制,以保護有價值的數據。 API 網關接收來自客戶端的所有 API 調用,並使用請求路由、組合和協議轉換將它們发送到正確的微服務。
使用 API 網關的主要原因之一是它能夠調用多個後端服務並聚合結果。客戶不必為每個單獨的服務發送請求,而是可以將它們發送到 API 網關,然後 API 網關將請求傳遞給相關服務。此外,API 網關提供了一種通用樣式 API 的替代方案。 API 網關還可以為每個客戶端公開不同的 API,這是當今不斷發展的環境中的必需品。

為什麼要使用 API 網關?
目前,大多數企業 API 都是使用網關部署的。由於微服務使用的增加,API 網關的使用越來越多。微服務使應用程序可以被解構為幾個鬆散耦合的服務,因為每個微服務需要它自己的功能。微服務使應用程序的不同功能的開發、部署和維護變得更容易,但它們也使客戶更難快速安全地訪問應用程序。 API 網關是解決此問題的方法。網關不是讓客戶單獨請求訪問每個微服務,而是請求的單一入口點,它將請求分配給適當的服務,收集結果並將其傳送回請求者。使用 API 網關的主要原因,此功能被開發人員稱為路由。例如,API 網關可幫助您的公司管理來自 Uber 等移動應用程序和 Google Maps 等後端應用程序的調用所產生的流量。
API 網關對於成功的 API 管理至關重要。作為連接客戶與服務的主要代理,網關支持重要的管理和安全功能,包括身份驗證、指標收集、輸入驗證和響應轉換。
驗證
API 網關可用於驗證 API 調用。這樣,即使客戶需要訪問多個服務的數據,他們也只需要在網關上進行一次身份驗證。這減少了延遲並確保整個應用程序的身份驗證過程保持一致。類似於如何使用護照來驗證您的身份或使用簽證來證明您可以在特定國家/地區工作,API 網關為消費者提供了多種方式來驗證並訪問您的 API 資源。網關可以使用眾多開放標準中的一種來確定消費者的身份或有效性(即 OAuth、JWT 令牌、API 密鑰、HTTP 基本/摘要、SAML 等),也可以使用非標準方式來定位憑證在消息的標頭或有效負載中。 API 網關還可以調用其他系統來驗證身份,就像警察可以訪問犯罪數據庫一樣。此外,就像機場的海關一樣,API 網關也可以檢查 API 使用者中的威脅。他們可以使用 API 防火牆、內容驗證和消息完整性檢查,包括確定 API 是否已被篡改。 API 網關還可以將傳入 API 的風險評估委託給第三方應用程序,以便他們做出決定。
指標收集
由於所有請求都通過 API 網關,因此它是收集數據分析的理想場所。例如,API 網關可以測量用戶發出的請求數或轉發到每個單獨微服務的請求數。 API 網關也可用於限制請求。如果用戶發送的請求過多,可以對網關進行編程以拒絕它們,而不是將它們傳遞給其中一個微服務。
輸入驗證
輸入驗證是 API 網關確保所有客戶請求都包含完成請求所需的信息,並以正確的格式提供。如果出現問題,網關將拒絕該請求。如果包含所有必要信息,網關會將請求發送到負責檢索請求信息的微服務。
響應轉換
響應轉換是 API 網關的一個重要功能。它充當信息的“翻譯器”。例如,如果您的後端服務放棄了 XML 格式的答覆,但請求者需要 JSON 格式的答覆,網關將自動處理此問題。不同的應用程序和用戶通常需要訪問不同的信息。移動應用程序的數據通常需要比 Web 應用程序的少,例如,網關可以對請求提供正確的響應。來自內部用戶的請求可能會在響應中包含更多數據。在響應來自外部用戶的類似請求(網關的工作)之前,其中一些數據需要得到安全保護。
API 網關的好處
將您的微服務包裝在一起並使其可通過 API 網關訪問,可以安全、更快、更輕鬆地訪問您的服務。使用 API 網關可為數字企業帶來無數額外的好處,包括:
- 通過單一接口方法使您的 API 和後端系統更加安全
- 使用用於安全和訪問控制、節流、路由、中介和 SLA 管理的可擴展策略可以讓您完全控制 API 執行環境。
- 為您的服務和應用程序用戶編寫更簡單的代碼
- 由於來回調用次數更少,隨著時間的推移延遲會減少
- 更快、更輕鬆地訪問所有微服務
- 減少每個單獨的微服務或負載平衡的工作負載
- 綜合指標收集
API 網關的其他好處是:它隱藏了您的應用程序與請求者或客戶端的分區方式,客戶端不再需要知道您所有單個服務的位置,並且無論使用的代碼如何,它都可以為每個請求提供最佳 API.
您的應用程序的成功需要強大的 API 網關。該網關可確保您的服務具有出色的性能、高可用性和可擴展性。