ABP 集成 nswag 根据 Swagger API 自动生成操作类代码
记录日期: 2019-9-22 23:12:39
原文链接:https://www.cnblogs.com/Qbit/p/11569906.html
集成记录:
npm install nswag --save-dev
复制 NSwag\src\NSwag.CodeGeneration.TypeScript\Templates 目录下的所有文件到 ts 项目的 nswag 目录下,nswag 源码下载困难,人肉拷贝吧 https://github.com/RicoSuter/NSwag/tree/master/src/NSwag.CodeGeneration.TypeScript/Templates
修改 service.config.nswag 中的 templateDirectory 为: "templateDirectory": "./Templates",
至此,可以随意调整复制过来的 liquid 模板,比如增加clientBaseClass 的引用 我的 完整配置如下:
{"runtime": "Default","defaultVariables": null,"documentGenerator": {"fromDocument": {"json": "","url": "http://localhost:21021/swagger/v1/swagger.json","output": null}},"codeGenerators": {"openApiToTypeScriptClient": {"className": "{controller}ServiceProxy","moduleName": "","namespace": "","typeScriptVersion": 2.7,"template": "Axios","promiseType": "Promise","httpClass": "HttpClient","useSingletonProvider": false,"injectionTokenType": "InjectionToken","rxJsVersion": 6.0,"dateTimeType": "Date","nullValue": "Null","generateClientClasses": true,"generateClientInterfaces": false,"generateOptionalParameters": false,"exportTypes": true,"wrapDtoExceptions": false,"exceptionClass": "ApiException","clientBaseClass": "AbpServiceBase","wrapResponses": false,"wrapResponseMethods": [],"generateResponseClasses": true,"responseClass": "SwaggerResponse","protectedMethods": [],"configurationClass": null,"useTransformOptionsMethod": false,"useTransformResultMethod": true,"generateDtoTypes": true,"operationGenerationMode": "MultipleClientsFromPathSegments","markOptionalProperties": false,"generateCloneMethod": false,"typeStyle": "Class","classTypes": [],"extendedClasses": [],"extensionCode": "","generateDefaultValues": true,"excludedTypeNames": [],"excludedParameterNames": [],"handleReferences": true,"generateConstructorInterface": false,"convertConstructorInterfaceData": true,"importRequiredTypes": true,"useGetBaseUrlMethod": false,"baseUrlTokenName": "API_BASE_URL","queryNullValue": "","inlineNamedDictionaries": false,"inlineNamedAny": false,"templateDirectory": "./Templates","typeNameGeneratorType": null,"propertyNameGeneratorType": null,"enumNameGeneratorType": null,"serviceHost": null,"serviceSchemes": null,"output": "../src/api/abp-service-proxies.ts"}}
}
ABP 的swagger 必须使用这种方式获取data.result
修改 Client.ProcessResponse.ReadBodyStart.liquid
import { AxiosResponse } from "axios";export class AbpServiceBase {protected transformResult(url: string, response: AxiosResponse, processor: (response: AxiosResponse) => Promise<any>): Promise<any> {// if(response.data.result){ // response.data=response.data.result;// }console.log(response) return processor(response);}
}
修改 File.liquid 文件,在48行增加 :
NSwag 中大量使用 启动新进程的方式调用代码,调试起来比较麻烦,在此记录
断点位置:NSwag.Commands.dll!NSwag.Commands.NSwagDocument.ExecuteCommandLineAsync.AnonymousMethod__0() 行 128
在 C:\projects\nswag\src\NSwag.Commands\NSwagDocument.cs(128)
> NSwag.Commands.dll!NSwag.Commands.NSwagDocument.StartCommandLineProcessAsync(string command) 行 258 C#
Console.Write("NSwag command line tool for .NET 4.6.1+ " + RuntimeUtilities.CurrentRuntime + ", ");return new NSwagCommandProcessor(new ConsoleHost()).Process(args);
回到源代码,搜索:NSwag command line tool for .NET 4.6.1+
打开 NSwag.Console 项目,跟踪到 NSwagCommandProcessor 类的 Process(string[] args) 方法
跟踪到:OpenApiToCSharpControllerCommand.RunAsync() 加上断点
进入 C:\Program Files (x86)\Rico Suter\NSwagStudio\Win
Shift 右键打开powershell 输入 .\NSwag.exe run "C:\Users\hyzx8\source\repos\hyzx86\vue-typescript-admin-template\nswag\service.config.nswag"
先不要执行,此时使用vs附加到该 Powershell 的进程
转载于:https://www.cnblogs.com/Qbit/p/11569906.html
ABP 集成 nswag 根据 Swagger API 自动生成操作类代码相关推荐
- idea 集成mybatis,利用MyBatis Generator自动生成实体类、mapper文件
最近一个老项目集成mybatis,利用 generator自动生成实体类.mapper的时候折腾了一小时,记录一下,避免以后再折腾 很简单的三步 https://gitee.com/shunangua ...
- php写实体类,自动生成实体类(方式一)
YMP框架自v1.0开始就支持通过数据库表结构自动生成实体类代码,所以v2.0版本不但重构了实体代码生成器,而且更简单好用! #------------------------------------ ...
- 使用 API 自动生成工具优化前端工作流
文章目录 1. 使用Api管理平台导出swagger.json文件 2. 使用swagger.json导入easy-mock 3. 使用easy-mock-cli生成js格式Api 在工作中,我们的前 ...
- [快速入门]Spring Boot+springfox-swagger2 之RESTful API自动生成和测试
Swagger是自动生成 REST APIs文档的工具之一.Swagger支持jax-rs, restlet, jersey.springfox-swagger是Spring生态的Swagger解决方 ...
- html5自动生成图片,HTML5拖放API如何实现自动生成相框功能 HTML5拖放API实现自动生成相框功能代码...
HTML5拖放API如何实现自动生成相框功能?下面小编给大家分享一下HTML5拖放API实现自动生成相框功能代码,代码很详细,小编觉得挺不错的,有需要的小伙伴们可以来看看. 实现功能: 将桌面图片拖入 ...
- 基于OpenAPI Specification自动生成Android客户端代码
OpenAPI Specification(OAS) 无论你从事前端开发还是后端开发,或多或少都听说过Swagger. Swagger Specification 是一种 API Specificat ...
- quicktype游戏java程序_使用QuickType工具从json自动生成类型声明代码
一.QuickType 工具功能简介 QuickType 是一款可以根据 json 文本生成指定语言(如 Type Script,C++,,Java,C#,Go 等)类型声明代码的工具. 例如我们在写 ...
- mysql 自动生成mapper_自动生成实体类、Mapper、Mapper.xml文件
自动生成实体类.Mapper.Mapper.xml文件 搭建Spring Boot + Mysql + MyBatis 项目 核心 配置pom.xml 创建表 配置文件 生成文件 结果 项目结构 搭建 ...
- java实体类没有映射文件_MyBatis自动生成实体类、DAO和XML映射文件,并去掉实体类中的getter和setter方法...
今天花了3个多小时搞定了这个事情,写个Blog记录一下,先看一下最终生成的实体类吧. packagecom.mybatis.pojo;importlombok.AllArgsConstructor;i ...
- 自动生成实体类、Mapper、Mapper.xml文件
自动生成实体类.Mapper.Mapper.xml文件 搭建Spring Boot + Mysql + MyBatis 项目 核心 配置pom.xml 创建表 配置文件 生成文件 结果 项目结构 搭建 ...
最新文章
- poj3320Jessica's Reading Problem—尺取法(java)
- Python异常及处理方法总结
- 如何攻克目标检测?百度全球顶级会议双料冠军团队有话说!
- FZU Monthly-201903 获奖名单
- MyBatis 缓存详解-一级缓存(本地缓存)介绍
- 一文教你使用java开发一款推箱子游戏
- android+button+不可点击置灰,android:tint 给imagebutton着色 按钮灰色
- c# 日期函数[string.Format----GetDateTimeFormats] --转载
- 网络诈骗是大数据的“原罪”吗
- c语言酒店管理系统,C语言酒店管理系统.pdf
- 寒门难出贵子,我当程序员让爸妈在老家长脸了
- 操作系统是介于计算机硬件和用户之间的接口,计算机操作系统知识盘点
- 【集合论】集合概念与关系 ( 集合表示 | 数集合 | 集合关系 | 包含 | 相等 | 集合关系性质 )
- 计算机设计大赛软件应用开发作品,2019年(第12届)中国大学生计算机设计大赛软件应用与开发类总决赛报道...
- 利用机器学习算法挖掘群控网络黑产设备
- 日本房产泡沫的崩塌,虽然很长,希望80后仔细阅读
- 顶点、 图元、片元、像素的含义
- kettle效率提升
- 使用NSIS制作多版本Revit插件(Revit二次开发)
- bat批处理定时重启应用程序
热门文章
- 阿里的easyexcel
- python元组排序_python元组怎么排序
- java 字符串拼接_不能用 + 拼接字符串? 这次我要吊打面试官!
- celery java_Celery(分布式任务队列) 的使用方法总结
- 目标检测的数据增强 -- 代码实现
- RPC框架dubbo架构原理及使用说明
- 用脆弱性评估流程击败黑客
- C++对象模型——关于对象(第一章)
- INADDR_ANY的确切含义
- Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)(转)