zoukankan      html  css  js  c++  java
  • ABP 集成 nswag 到 VUE 项目, 自动生成操作类代码

    记录日期: 2019-9-22 23:12:39

    原文链接:https://www.cnblogs.com/Qbit/p/11569906.html

    集成记录:

    npm install nswag --save-dev

    复制  NSwagsrcNSwag.CodeGeneration.TypeScriptTemplates 目录下的所有文件到 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 

    {% elseif Framework.IsAxios -%}
    const _responseText = response.data.result;    
     
    或者你不去修改模板,使用 我的配置,然后继承这个类,去除注释代码
     
    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行增加 :

    import { AbpServiceBase } from './abp-service-base';
     
    在项目的 packge.json scripts 中增加:
      "genApi":"cd nswag &.\refresh.bat"
     
    这样可以不用每次输入代码执行生成
     
     
     
  • 相关阅读:
    CSS 按类查看的常用样式属性
    html5前端准备资料
    编译和链接一些错误和警告
    [转]assert()函数用法总结
    [转]C++ 函数模板特化导致的多重定义链接错误
    [转]退出线程的几种方法
    [总结]编程中遇到的vc提示的一些警告
    [转]__declspec(dllexport) 和 __declspec(dllimport)
    [转]PROCESS_INFOMATION
    [转载] STARTUPINFO结构体
  • 原文地址:https://www.cnblogs.com/Qbit/p/11569906.html
Copyright © 2011-2022 走看看