
了解 Rest API 開發中的 HTTP 方法
API 編排層支持不同服務之間的通信和集成,在提供單個響應之前處理對不同服務的多個調用。它確保流暢的前端體驗,同時管理服務之間的權限、授權和安全性。
API編排功能一般包括如下功能:
API編排工具非常好用,但也存在7個痛點,分別是:
由于 API 編排具有“用戶自助”的特性,注定了其用戶“既是生產者又是消費者”。而任何網絡平臺的用戶,都必須假定為“沒有編程基礎”,即面向沒有編程經驗的普通用戶服務。
API 編排需要構造多個 API 調用,捕獲和剪裁輸出數據,同時也可能存在分支和根據條件重復處理等需求。
我們的編程啟蒙老師一定都講過,編程無非就是順序+選擇+循環。可見,編程所需所有元素,在 API 編排中皆有需求。然而,在我們的用戶是沒有編程基礎的普通用戶的情況下,如何讓他們理解和描述要進行的操作,是另一個難題。
站在程序員的角度,在各種高級編程語言百家爭鳴的今天,描述和實現“ API 編排”需求的方法有千萬種。
靜態語言有 C、C++、C#、JAVA、GO 等供我們選擇,動態腳本語言有 Python、Lua、Perl、JavaScript、Ruby、Lisp 等多種選擇。可以說任意組合一門靜態語言+一門動態語言,都可以完美勝任我們的“動態 API 編排”任務。然而,當我們的用戶被定義為“沒有編程基礎”,該問題就開始變得撲朔迷離。
由于微服務拆分的原則是讓每個服務足夠獨立,對服務的實現語言和使用的技術,并不會做嚴格的限制,所以微服務天生就有異構的特性。
如果是同一個 team 開發各個子服務,可能會在 API 提供方式、調用方法上做一些簡單約定。如果是由不同的 team 開發這些子服務,甚至還會存在 HTTP/RPC、RESTful/非 REST 這些可選項。如果需要兼容第三方 API,則還會存在編程語言差異,使用的技術差異等。
因此,對于一個對兼容性有足夠考慮的 API 編排系統而言,承認和處理后端 API 的異構問題,是必然繞不過去的彎。
雖然 API 編排不是直接由程序員編寫代碼來構造一個 HTTP/RPC 調用來完成 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網關都自帶編排功能,探索16個適合現代應用程序的最佳API網關,選擇合適的API網關。
一些開源API編排工具,可以集成到自有系統中,例如Apache Kafka和 Camel、Netflix Conductor 和 AWS Step Functions,它們根據您的需求和技術堆棧提供不同的 API 編排方法。
總之,API 編排在簡化 API 管理、實現服務之間的高效通信和集成以及改善整體用戶體驗方面發揮著至關重要的作用。通過了解 API 編排的核心要素和優勢,企業可以優化其 API 工作流程并增強其服務。