如何使用SwaggerCodegen生成代码

如何使用Swagger Codegen生成代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

成都创新互联专业提供四川乐山服务器托管服务,为用户提供五星数据中心、电信、双线接入解决方案,用户可自行在线购买四川乐山服务器托管服务,并享受7*24小时金牌售后服务。

由于开发的服务端内容,很多需要生成多种客户端代码,则需要自动化转换。

OpenApi代码生成流程

  1. Springboot引入SwaggerUI

  2. 运行SwaggerUI,获取接口的Json文件

  3. 直接命令生成客户端代码

Mac安装

brew install swagger-codegen

运行如下内容

==> Downloading https://homebrew.bintray.com/bottles/swagger-codegen-3.0.13.high_sierra.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/16/162075201143d225c420496cdc5529093be529ebe4ad7ec1d7a7fa922bb35d4b?__gda__=exp=1571906628~hmac=033f62943a9bf07acbd4cec7d9ac
########################################################                  78.3%
curl: (18) transfer closed with 3941668 bytes remaining to read
Error: Failed to download resource "swagger-codegen"
Download failed: https://homebrew.bintray.com/bottles/swagger-codegen-3.0.13.high_sierra.bottle.tar.gz
Warning: Bottle installation failed: building from source.
==> Installing dependencies for swagger-codegen: maven
==> Installing swagger-codegen dependency: maven
==> Downloading https://www.apache.org/dyn/closer.cgi?path=maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz
==> Downloading from http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz
######################################################################## 100.0%
????  /usr/local/Cellar/maven/3.6.2: 71 files, 10.2MB, built in 5 seconds
==> Downloading https://github.com/swagger-api/swagger-codegen/archive/v3.0.13.tar.gz
==> Downloading from https://codeload.github.com/swagger-api/swagger-codegen/tar.gz/v3.0.13
######################################################################## 100.0%
==> mvn clean package

查看swagger支持的语言种类

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar

能够看到如下结果

Available languages: [ada, ada-server, akka-scala, android, apache2, apex, aspnetcore, bash, csharp, clojure, cwiki, cpprest, csharp-dotnet2, dart, dart-jaguar, elixir, elm, eiffel, erlang-client, erlang-server, finch, flash, python-flask, go, go-server, groovy, haskell-http-client, haskell, jmeter, jaxrs-cxf-client, jaxrs-cxf, java, inflector, jaxrs-cxf-cdi, jaxrs-spec, jaxrs, msf4j, java-pkmst, java-play-framework, jaxrs-resteasy-eap, jaxrs-resteasy, javascript, javascript-closure-angular, java-vertx, kotlin, lua, lumen, nancyfx, nodejs-server, objc, perl, php, powershell, pistache-server, python, qt5cpp, r, rails5, restbed, ruby, rust, rust-server, scala, scala-gatling, scala-lagom-server, scalatra, scalaz, php-silex, sinatra, slim, spring, dynamic-html, html2, html, swagger, swagger-yaml, swift4, swift3, swift, php-symfony, tizen, typescript-aurelia, typescript-angular, typescript-inversify, typescript-angularjs, typescript-fetch, typescript-jquery, typescript-node, undertow, ze-ph, kotlin-server]

查看帮助

$ java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar help
usage: swagger-codegen-cli  []

The most commonly used swagger-codegen-cli commands are:
    config-help   Config help for chosen lang
    generate      Generate code with chosen lang
    help          Display help information
    langs         Shows available langs
    meta          MetaGenerator. Generator for creating a new template set and configuration for Codegen.  The output will be based on the language you specify, and includes default templates to include.
    validate      Validate specification
    version       Show version information

See 'swagger-codegen-cli help ' for more information on a specific
command.

查看generate帮助

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar help generate
NAME
        swagger-codegen-cli generate - Generate code with chosen lang

SYNOPSIS
        swagger-codegen-cli generate
                [(-a  | --auth )]
                [--additional-properties ...]
                [--api-package ] [--artifact-id ]
                [--artifact-version ]
                [(-c  | --config )]
                [-D ...] [--git-repo-id ]
                [--git-user-id ] [--group-id ]
                [--http-user-agent ]
                (-i  | --input-spec )
                [--ignore-file-override ]
                [--import-mappings ...]
                [--instantiation-types ...]
                [--invoker-package ]
                (-l  | --lang )
                [--language-specific-primitives ...]
                [--library ] [--model-name-prefix ]
                [--model-name-suffix ]
                [--model-package ]
                [(-o  | --output )]
                [--release-note ] [--remove-operation-id-prefix]
                [--reserved-words-mappings ...]
                [(-s | --skip-overwrite)]
                [(-t  | --template-dir )]
                [--type-mappings ...] [(-v | --verbose)]

OPTIONS
        -a , --auth 
            adds authorization headers when fetching the swagger definitions
            remotely. Pass in a URL-encoded string of name:header with a comma
            separating multiple values

        --additional-properties 
            sets additional properties that can be referenced by the mustache
            templates in the format of name=value,name=value. You can also have
            multiple occurrences of this option.

        --api-package 
            package for generated api classes

        --artifact-id 
            artifactId in generated pom.xml

        --artifact-version 
            artifact version in generated pom.xml

        -c , --config 
            Path to json configuration file. File content should be in a json
            format {"optionKey":"optionValue", "optionKey1":"optionValue1"...}
            Supported options can be different for each language. Run
            config-help -l {lang} command for language specific config options.

        -D 
            sets specified system properties in the format of
            name=value,name=value (or multiple options, each with name=value)

        --git-repo-id 
            Git repo ID, e.g. swagger-codegen.

        --git-user-id 
            Git user ID, e.g. swagger-api.

        --group-id 
            groupId in generated pom.xml

        --http-user-agent 
            HTTP user agent, e.g. codegen_csharp_api_client, default to
            'Swagger-Codegen/{packageVersion}}/{language}'

        -i , --input-spec 
            location of the swagger spec, as URL or file (required)

        --ignore-file-override 
            Specifies an override location for the .swagger-codegen-ignore file.
            Most useful on initial generation.

        --import-mappings 
            specifies mappings between a given class and the import that should
            be used for that class in the format of type=import,type=import. You
            can also have multiple occurrences of this option.

        --instantiation-types 
            sets instantiation type mappings in the format of
            type=instantiatedType,type=instantiatedType.For example (in Java):
            array=ArrayList,map=HashMap. In other words array types will get
            instantiated as ArrayList in generated code. You can also have
            multiple occurrences of this option.

        --invoker-package 
            root package for generated code

        -l , --lang 
            client language to generate (maybe class name in classpath,
            required)

        --language-specific-primitives 
            specifies additional language specific primitive types in the format
            of type1,type2,type3,type3. For example:
            String,boolean,Boolean,Double. You can also have multiple
            occurrences of this option.

        --library 
            library template (sub-template)

        --model-name-prefix 
            Prefix that will be prepended to all model names. Default is the
            empty string.

        --model-name-suffix 
            Suffix that will be appended to all model names. Default is the
            empty string.

        --model-package 
            package for generated models

        -o , --output 
            where to write the generated files (current dir by default)

        --release-note 
            Release note, default to 'Minor update'.

        --remove-operation-id-prefix
            Remove prefix of operationId, e.g. config_getId => getId

        --reserved-words-mappings 
            specifies how a reserved name should be escaped to. Otherwise, the
            default _ is used. For example id=identifier. You can also
            have multiple occurrences of this option.

        -s, --skip-overwrite
            specifies if the existing files should be overwritten during the
            generation.

        -t , --template-dir 
            folder containing the template files

        --type-mappings 
            sets mappings between swagger spec types and generated code types in
            the format of swaggerType=generatedType,swaggerType=generatedType.
            For example: array=List,map=Map,string=String. You can also have
            multiple occurrences of this option.

        -v, --verbose
            verbose mode

生成代码

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i http://localhost:8000/v2/api-docs?group=v2/aicfve-sync -l csharp

生成Unity可用代码

由于当前版本的Unity支持.Net Standard 2.0标准。则所有代码不能默认生成csharp代码,将会导致问题的发生。

todo:

修改库的命名

todo:

关于如何使用Swagger Codegen生成代码问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


文章题目:如何使用SwaggerCodegen生成代码
文章源于:http://hbruida.cn/article/jjichg.html