.NetCore2.1 WebAPI 根据swagger.json自动生成客户端代码

前言

上一篇博客中我们可以得知通过Swagger插件可以很方便的提供给接口开发者在线调试,但是实际上Swagger附带的功能还有很多,

比如使用NSwag生成客户端调用代码,进一步解放接口开发者。

NSwag 

NSwag是一个发布在GitHub上的开源项目,它可以根据Swagger说明页上的swagger.json文件生成C#、TypeScript客户端代码。

NSwag的项目地址:https://github.com/RSuter/NSwag

 

Nswag提供4种代码生成方法

1、使用 NSwagStudio,这是一款 Windows 桌面应用,用于在 C# 和 TypeScript 中为 API 生成客户端代码。

2、使用 NSwag.CodeGeneration.CSharp 或 NSwag.CodeGeneration.TypeScript NuGet 包在项目中执行代码生成。

3、使用命令行中的 NSwag。

4、使用 NSwag.MSBuild NuGet 包。

这里推荐使用NSwagStudio,可以从GitHub上下载该工具,地址:https://github.com/RSuter/NSwag/wiki/NSwagStudio

下载后开始安装,安装完毕后打开NSwagStudio,如下图,在左侧选择Tab页菜单里选择Documents

640?wx_fmt=png

如上图框框选中的几点,我们需要留意。其中Swagger Specification URL就是我们WebAPI的swagger.json的在线地址。

如果点击【Create local Copy 】按钮时你的WebAPI未在线则代码生成工具会弹出错误对话框,如下图:

640?wx_fmt=png

 

 所以采取读取Swagger Specification URL 方式进行生成代码的前提条件是你必须保证swagger.json文件能在线读取!

 其次你可以选择RunTime(运行时),这里应该是服务端WebAPI的运行时(毕竟TypeScript是不关心你服务端是.NET Core还是.NET Framework).

因为我的环境是.NET Core2.1,所以这里选择NET Core21。

接下来,点击【Create local Copy】按钮,点击后NSwagStudio会与WebAPI服务端进行交互,成功后会将swagger.json文件格式化到左边的文本编辑器中,如下图:

640?wx_fmt=png

 

此时,你可以在右侧的Outputs中勾选你需要输出的文件格式,这里我选择TypeScript和CSharp Client,

这个地方有个C# WebAPI Controller,我有点纳闷,我都有swagger.json文件了绝壁是已经存在webapi了,

没有必要反向再去生成一遍webapi的控制器啦。 不懂,反正只管生成客户端代码就好。

我们勾选好后下面就会出现相应的输出配合页面,如下图:

640?wx_fmt=png

 

 

 我们选择CSharp Client页面,该页面左侧分为Setting和Output两个页面,Setting页可以对输出的cs文件进行配置,如命名空间、类名称、输出文件路径等等(很多配置我也不会....)

我们点击【Generate Outputs】后NSwagStudio会根据配置生成客户端操作类,在Output页面即可检查,检查无误后再点击【Generate Files】可将类文件导出到配置的输出目录。

TypeScript亦是如此,同时NSwagStudio也可支持加载DLL反射生成,具体方法可根据官网操作(毕竟可以直接使用json文件在线生成没必要再自己手工选择dll..)

 

这里截图看SwagerUI页和NSwagStudio生成后的客户端cs文件

640?wx_fmt=png

生成的客户端C#代码:

代码略,请阅读原文。

结语

不得不赞叹Swagger的强大,它的出现解放了多少程序员啊,后续但凡有客户端码农说不会调用哥的API,哥都可以直接给他代码生成器生成的代码,一个字:爽。

原文地址:https://www.cnblogs.com/hunanzp/p/9297361.html

 
 

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

NET爱好者的福音来啦! Dot Net代码生成器 - NET代码生成利器 - DotNet代码生成器  基于.net framework 2.0 的代码生成器,功能强大,操作灵活,可以生成任何一种代码文件。提供了数据源、模板、另存为、工具、数据扩展5种插件接口。   1、自定义模板。目前只有一个基础模板,是基于XML配置、字符串替换的,不过该模板支持动态调用代码文件进行编译,对要生成的对象进行预处理,以达到个人的目的。后期可以寻找其他更优秀的模板引擎,来提高生成效率。   目前该模板下定义了几个模板文件,比如FaibClass.data的,还有YS.ORMapper,还有生成HTML、生成SQL的。   2、数据源。一改以往代码生成器的一惯作风,只是单一的使用Sql或其他数据源,在这个工具里,可以打开PowerDesign文档,也可以打开ERWin或是Visio(尚在研究阶段)。并且提供了强好的表及字段编辑功能,主键、外键、枚举等都可以自定义。   还提供了架构同步功能。   3、工具。可以集成一些工具于CodeBuilder强大的界面管理中,可以与CodeBuilder进行协作工作,比如提供对表名字段修改、生成的工具。   4、数据扩展。分别为表及字段进行了扩展,可由个人需要实现该接口,将扩展数据附加于表或字段中,生成更丰富的代码。   5、系统托盘。显示托盘时,再次双击CodeBuilder或双击.dsc文件,都会由托盘调入正在后台运行的CodeBuilder。   6、最后在收藏夹中提供了一个IE工具栏插件,可将网页添加到CodeBuilder的收藏夹。   7、在线插件安装。可由爱好者提供插件发布,在线共享优秀插件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值