基于Kiota生成API客户端

      Kiota是一个命令行工具,用于生成API客户端,以调用您感兴趣的任何OpenAPI描述的API。目标是消除您需要调用的每个API对不同的API SDK的依赖。Kiota API客户端提供了高质量API SDK提供的所有功能的强类型体验,但无需为每个HTTP API学习新类库。

功能特点

支持多种语言:C#、CLI、Go、Java、PHP、Python、Ruby、Swift和TypeScript
充分利用OpenAPI描述的全部功能
能够轻松实现新的语言支持
仅通过构建核心库生成所需的源代码
最大限度地减少外部依赖性
利用JSON Schema描述生成基于原语的模型序列化/反序列化代码
仅支持为 OpenAPI 描述的指定子集生成代码
生成启用IDE自动完成的代码,以帮助发现API资源
允许完全访问 HTTP 功能

代码模型

大多数SDK生成器工作都使用DOM的API描述和模板的组合来创建源代码。模板有几个缺点:

语言之间的语法差异会导致语言之间的语义重复。这会导致模板中存在大量冗余。
在有条件地生成源代码时需要少量的逻辑,这会在模板中引入复杂的语法,这些语法很难测试、调试和维护。
由于语言模板是独立的,不同语言的行为和能力很容易出现分歧。如果你试图在各种语言之间提供一致的功能支持,这可能会带来问题。
Kiota采用不同的方法进行代码生成。分析OpenAPI PathItems并创建相应的语言无关代码模型。此代码模型依赖于所有最新主流语言中可用的标准面向对象功能。

为 Kiota 构建的代码模型旨在支持在核心 HTTP 库上创建薄“打字”层所需的功能。它不是为任何任意代码提供全面的代码模型。使用通用代码模型的方法是可行的,因为我们的目标是现代面向对象语言,并将场景限制在发出 HTTP 请求的场景中。

Kiota的抽象

       生成的源代码并不直接包含发起HTTP请求的逻辑。它需要与一个核心库连接,由该核心库来发起HTTP请求。Kiota.Core库将提供基本的HTTP功能,但API所有者可以选择为自己的API优化提供自己的核心库。核心库依赖于某种语言的Kiota抽象库,并提供向API发起HTTP调用的服务。这样,Kiota.Core库为API请求提供了统一的接口,而具体的HTTP请求实现可以由各语言的核心库自定义实现,从而达到了灵活性与通用性的平衡。


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,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

热门相关:试婚老公,要给力   试婚100天:夜少,轻轻宠   都市捉妖人   都市剑说   试婚100天:夜少,轻轻宠