基於Kiota生成API客戶端

      Kiota是一個命令行工具,用於生成API客戶端,以調用您感興趣的任何OpenAPI描述的API。目標是消除您需要調用的每個API對不同的API SDK的依賴。Kiota API客戶端提供了高質量API SDK提供的所有功能的強類型體驗,但無需爲每個HTTP API學習新類庫。

image

功能特點

支持多種語言:C#、CLI、Go、Java、PHP、Python、Ruby、Swift和TypeScript
充分利用OpenAPI描述的全部功能
能夠輕鬆實現新的語言支持
僅通過構建核心庫生成所需的源代碼
最大限度地減少外部依賴性
利用JSON Schema描述生成基於原語的模型序列化/反序列化代碼
僅支持爲 OpenAPI 描述的指定子集生成代碼
生成啓用IDE自動完成的代碼,以幫助發現API資源
允許完全訪問 HTTP 功能

image

image

代碼模型

大多數SDK生成器工作都使用DOM的API描述和模板的組合來創建源代碼。模板有幾個缺點:

語言之間的語法差異會導致語言之間的語義重複。這會導致模板中存在大量冗餘。
在有條件地生成源代碼時需要少量的邏輯,這會在模板中引入複雜的語法,這些語法很難測試、調試和維護。
由於語言模板是獨立的,不同語言的行爲和能力很容易出現分歧。如果你試圖在各種語言之間提供一致的功能支持,這可能會帶來問題。
Kiota採用不同的方法進行代碼生成。分析OpenAPI PathItems並創建相應的語言無關代碼模型。此代碼模型依賴於所有最新主流語言中可用的標準面向對象功能。

爲 Kiota 構建的代碼模型旨在支持在覈心 HTTP 庫上創建薄“打字”層所需的功能。它不是爲任何任意代碼提供全面的代碼模型。使用通用代碼模型的方法是可行的,因爲我們的目標是現代面嚮對象語言,並將場景限制在發出 HTTP 請求的場景中。

Kiota的抽象

       生成的源代碼並不直接包含發起HTTP請求的邏輯。它需要與一個核心庫連接,由該核心庫來發起HTTP請求。Kiota.Core庫將提供基本的HTTP功能,但API所有者可以選擇爲自己的API優化提供自己的核心庫。核心庫依賴於某種語言的Kiota抽象庫,並提供向API發起HTTP調用的服務。這樣,Kiota.Core庫爲API請求提供了統一的接口,而具體的HTTP請求實現可以由各語言的核心庫自定義實現,從而達到了靈活性與通用性的平衡。

image


Docker運行

docker run -v /some/output/path:/app/output \
-v /some/input/description.yml:/app/openapi.yml \
mcr.microsoft.com/openapi/kiota generate --language csharp -n namespace-prefix

可以使用--openapi參數搭配URI,而非使用卷映射(volume mapping)來生成SDK。

如果想要從在線的OpenAPI描述生成SDK並保存到當前目錄,可以使用如下命令:

docker run -v ${PWD}:/app/output mcr.microsoft.com/openapi/kiota \
generate --language typescript -n gfx -d \
https://raw.githubusercontent.com/microsoftgraph/msgraph-sdk-powershell/dev/openApiDocs/v1.0/Mail.yml

還有命令行CLI, 從源碼編譯等方式,詳細參考官網

Tips:

1. 另一點兒需要注意是JAVA是基於JDK17版本,更多希望大家去嘗試。

2. Kiota生成客戶端代碼實際也可以用於自動化測試基礎框架。


今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管管,團隊建設 有參考作用 , 您可能感興趣的文章:
領導人怎樣帶領好團隊
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟件工程的迷思
企業項目化管理介紹
軟件項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
項目管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
互聯網數據庫架構設計思路
IT基礎架構規劃方案一(網絡系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變

如有想了解更多軟件設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關注我的微信訂閱號:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 該文章也同時發佈在我的獨立博客中-Petter Liu Blog。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章