Nswag 介绍
NSwag是一个Swagger 2.0 API(OpenAPI)工具链,用于.NET,Web API,TypeScript(jQuery,AngularJS,Angular 2 +,Aurelia,KnockoutJS等)和其他平台,用C#编写。Swagger规范使用JSON和JSON Schema来描述RESTful Web API。NSwag项目提供了从现有ASP.NET Web API控制器生成Swagger规范的工具以及这些Swagger规范中的客户端代码。
可以根据Swagger说明页上的swagger.json文件生成C#、TypeScript客户端代码。
Nswag 前言
本文只是针对微服架构以及多服务程序,用Nswag在同一个Angular前端程序中生成多个接口请求代码文档。主要是在同一个前端中继承多个接口程序。想了解如和在程序中使用nswag,请参考官方https://github.com/RicoSuter/NSwag
快速实践
修改Nswag配置
基于现有的Nswag 配置,只需按以下步骤配置就行了。
对每个接口服务都建一个service.config.[接口服务名].nswag。
service.config.[接口服务名].nswag 内容基本一样,需要修改地方如下:
Swagger.json 地址改成对应的地址。
codeGenerators节点下ClassName
注意加上接口服务名称的前缀,以便调用的时候区分。
codeGenerators节点下baseUrlTokenValue,以便后面配置多服务路由使用
codeGenerators节点下output,本节点是生成的代码文件保存地址,只要修改最后文件名,格式为[接口服务名]-service-proxies.ts
以上修改完成之后执行Nswag命令 ,可见执行了两个Nswag文件
最后在service-proxy.module.ts文件中引入注册就能用了
配置多接口路由
前面配置完成之后,虽然可以成功生成请求接口的代码,但是想要在同一个前端程序中请求来至不同端口域名下的接口地址,那么就需要再配置多路由。
首先在appconfig.json ,针对每个服务接口顶一个baseUrl,如下图所示
接下来就是在AppConsts.ts中定义路由常量,然后在AppPreBootstrap.ts中给常量赋值,如下图所示
最后就是在root.module中配置providers节点,如下图所示