API 編排如何工作?

API 編排層支持不同服務之間的通信和集成,在提供單個響應之前處理對不同服務的多個調用。它確保流暢的前端體驗,同時管理服務之間的權限、授權和安全性。

API 編排的核心元素

API編排功能一般包括如下功能:

  1. 集成:在前端和后端系統之間將數據轉換為不同的格式,將新的 API 和服務與遺留系統集成。
  2. 數據轉換:標準化數據格式以滿足客戶端和后端的期望,實現不同服務之間的通信。
  3. 邏輯工作流:在調用和響應之間添加邏輯工作流,以實現服務和數據格式之間的通信和協調。
  4. 自動化:自動化不同服務之間的復雜工作流程、操作和交互,以實現高效的流程和服務。
  5. 監控和錯誤通知:在抽象層面提供可觀察性,以處理業務流程層的監控,并通過自動錯誤通知更快地檢測和診斷錯誤。
  6. 身份驗證和 API 安全:管理 API 和服務之間的身份驗證和授權機制,以確保數據訪問的安全。
  7. 緩存:通過緩存數據來減輕后端的負擔,以提高性能并減少往返 API 請求的次數。

API 編排的痛點

API編排工具非常好用,但也存在7個痛點,分別是:

面向沒有編程基礎的普通用戶服務

由于 API 編排具有“用戶自助”的特性,注定了其用戶“既是生產者又是消費者”。而任何網絡平臺的用戶,都必須假定為“沒有編程基礎”,即面向沒有編程經驗的普通用戶服務。

功能需要覆蓋完備的編程元素

API 編排需要構造多個 API 調用,捕獲和剪裁輸出數據,同時也可能存在分支和根據條件重復處理等需求。

我們的編程啟蒙老師一定都講過,編程無非就是順序+選擇+循環。可見,編程所需所有元素,在 API 編排中皆有需求。然而,在我們的用戶是沒有編程基礎的普通用戶的情況下,如何讓他們理解和描述要進行的操作,是另一個難題。

沒有現成的編程語言可用

站在程序員的角度,在各種高級編程語言百家爭鳴的今天,描述和實現“ API 編排”需求的方法有千萬種。

靜態語言有 C、C++、C#、JAVA、GO 等供我們選擇,動態腳本語言有 Python、Lua、Perl、JavaScript、Ruby、Lisp 等多種選擇。可以說任意組合一門靜態語言+一門動態語言,都可以完美勝任我們的“動態 API 編排”任務。然而,當我們的用戶被定義為“沒有編程基礎”,該問題就開始變得撲朔迷離。

后端 API 實現上的異構特性

由于微服務拆分的原則是讓每個服務足夠獨立,對服務的實現語言和使用的技術,并不會做嚴格的限制,所以微服務天生就有異構的特性。

如果是同一個 team 開發各個子服務,可能會在 API 提供方式、調用方法上做一些簡單約定。如果是由不同的 team 開發這些子服務,甚至還會存在 HTTP/RPC、RESTful/非 REST 這些可選項。如果需要兼容第三方 API,則還會存在編程語言差異,使用的技術差異等。

因此,對于一個對兼容性有足夠考慮的 API 編排系統而言,承認和處理后端 API 的異構問題,是必然繞不過去的彎。

原子化的描述 API 的調用方法及構造輸入輸出參數

雖然 API 編排不是直接由程序員編寫代碼來構造一個 HTTP/RPC 調用來完成 API 訪問,但其最終要實現的效果與前者高度一致。由于后端 API 天生的異構特性,使我們必須提供一種準確且易懂的描述方式,讓用戶告訴我們如下問題的答案:

因此,描述和實現構造 API 調用參數的過程和方法,成為設計 API 編排系統中最關鍵的一環。

編排第三方 API 的身份認證問題

由于一般對外提供 API 服務的系統,都會加入身份認證功能,來保證 API 不會被非法調用,以此保證服務器安全與穩定。對于需要兼容第三方 API 的 API 編排系統而言,需要采用一種通用的描述方法,讓實現 API 的第三方可以準確的描述自己實現的 API 所使用的身份認證方法。

常見的身份認證方法有:OIDC、 JWT、 bearer Tokens、Basic Auth、Signature、OAuth 2 等等。其中 Signature 認證方法只是使用“簽名”認證方式的一種統稱。實際上采用何種算法,使用什么步驟來構造這個“簽名字符串”,都需要有統一的方法來詳細描述。

說明

常見的“簽名”構造方法有:參數排序方法、追加字符串、計算 HASH 值、計算 HMAC HASH、AES/RSA 加密解密、hex/base64/url 編碼解碼等等。

由于第三方所使用的身份認證方法的多樣性,且沒有統一的標準,因此對 API 編排系統而言,如何原子化的定義和描述這些身份認證方法,也是一個不容忽視的大課題。

API 及 API 私鑰的權限問題

API 私鑰(如:登錄網絡平臺的用戶名密碼)是用戶訪問第三方 API 平臺的唯一身份證明數據,對用戶數據安全有著至關重要的作用。大部分API網關采用對稱加密方式,以簡化API程序對接。

API 編排需要代理用戶向第三方 API 服務器發起 API 調用請求,所以必須由用戶提供此私鑰才能完成該操作。

那么,問題的核心即變為,我們需要設計一套嚴密的安全體系,讓用戶信任我們的系統,將 API 私鑰托管在平臺是安全可信的。安全托管這些 API 私鑰的必要環節包括:加密上傳,加密存儲,任何第三方用戶使用需要授權,后端透明使用,內容對任何用戶不可見。

API 網關是編排器嗎?

雖然API網關 并非確切的 API 服務編排器,但它可以執行類似于編排的任務,例如緩存、監控和轉換。不過,API 網關是 API 請求的統一入口點,通過 API 管理客戶端和后端之間的交互,而編排層則管理工作流或分布式系統中多個任務或服務的執行。

API 組合與編排有什么區別?

API 組合是一種客戶端驅動的方法,它指定數據要求并獨立調用多個 API,聚合和組合滿足客戶端請求所需的各種 API 數據。另一方面,API 編排是一種集中式方法,其中服務編排器協調和管理多個 API 或微服務之間的順序、依賴關系和數據流,以完成更廣泛的業務流程或工作流。

API 編排工具

有各種 API 編排工具可用于滿足不同的需求、偏好和技術堆棧。一些API網關都自帶編排功能,探索16個適合現代應用程序的最佳API網關,選擇合適的API網關。

一些開源API編排工具,可以集成到自有系統中,例如Apache Kafka和 Camel、Netflix Conductor 和 AWS Step Functions,它們根據您的需求和技術堆棧提供不同的 API 編排方法。

總之,API 編排在簡化 API 管理、實現服務之間的高效通信和集成以及改善整體用戶體驗方面發揮著至關重要的作用。通過了解 API 編排的核心要素和優勢,企業可以優化其 API 工作流程并增強其服務。

常見問題

  1. 什么是 API 編排?
    API 編排是一種協調傳入請求、多個 API 服務和響應以增強通信和集成的方法。
  2. API 編排如何工作?
    API 編排的工作原理是實現不同服務之間的通信和集成,在提供單個響應之前處理對不同服務的多個調用。
  3. API 編排的核心元素是什么?
    核心元素包括集成、數據轉換、邏輯工作流、自動化、監控和錯誤通知、身份驗證和 API 安全以及緩存。
  4. API 網關是編排器嗎?
    雖然 API 網關執行的任務與編排類似,但它是 API 請求的統一入口點,通過 API 管理客戶端和后端之間的交互,而編排層則管理工作流或分布式系統中多個任務或服務的執行。
  5. API 組合和編排之間有什么區別?
    API 組合是一種客戶端驅動的方法,它指定數據要求并獨立調用多個 API,而 API 編排是一種集中式方法,其中服務編排器協調和管理多個 API 或微服務之間的順序、依賴關系和數據流

上一篇:

什么是SQL注入?理解、風險與防范技巧

下一篇:

API版本控制:URL、標頭、媒體類型版本控制
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費