Swagger Codegen 自动生成Retrofit 代码

swagger是一个统一前后端的好工具,可以使用它来规划客户端的API访问规划,可以用来规划服务端接口的开发。这篇文章我介绍一下如何使用swagger codegen自动生成retrofit代码(rxjava2)。

如何使用swagger-codegen-cli生成retrofit 代码

开门见山,不BB,看看怎么自动生成代码

  • 下载swagger-codegen-cli.jar

    首先要我们先去下载swagger-codegen-cli.jar 包,写这篇文章的时候最新是3.0.0版本,下载地址在这里哟 ,下载下来的的文件名带有和版号,“swagger-codegen-cli-3.0.0-20170727.135949-1.jar”。觉得文件名太长,输入命令太累,而且容易出错误,所有我把它重命名了,“swagger-codegen-cli.jar”,当然你也可以根据自己喜欢重命名或不重命名它。

  • maven

    官方和许多网友说要安装maven,那就去下个maven,安装它,并把maven路径添加到环境变量path中。其实我好像没有安装maven的,但是我的retrofit代码还是生成成功了。

  • 写配制文件config.json

    新建个文件命名为config.json,在config.json文件中添加如下内容

    {
      "library": "retrofit2",
      "useRxJava2": "true",
      "developerName": "leix",
      "developerEmail": "",
      "developerOrganization": "albani.com",
      "invokerPackage": "com.albani.app",
      "modelPackage": "com.albani.app.data.entity",
      "apiPackage": "com.albani.app.data.api",
      "artifactId": "swagger-petstore-retrofit2"
    }
    
  • 准备swagger.json

    json文件和yml文件都是可以的,所以用editor生成swagger.json或swagger.yml

  • 见证奇迹了

    windows下运行cmd,输入如下命令:

    java -jar swagger-codegen-cli.jar generate -i swagger.json -o client -l java -c config.json
    

    回车,奇迹发生了,在你的client文件夹下生成了retrofit 网络请求代码,当然这个代码可能还是要根据需要做些小调整的。。

简单解析一下swagger-codegen的用法吧

上面代码已经生成了,但它是怎么动作的呢?在github上的文章说的比较清楚,下面来简单说说吧!

  • 在cmd中输入如下命名,获取帮助说明

    java -jar 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 swagger-codegen-cli.jar generate 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