Swagger-Condegen自动生成客户端服务端接口代码。

swagger2
     swagger是一个统一前后端的好工具,可以用来规划客户端API的访问控制,可用来规划服务端的接口开发。通常情况下我们很羡慕那些基于WS/SOAP协议服务的人,他们可以很轻松的基于WSDL接口规范生成一个客户端的API,这样大大的简化了服务的调用。
     如何使用swagger-codegen-cli来生成对应的客户端和服务端代码呢?接下来就是见证奇迹的时刻.
1. 首先笔者是使用了maven来构建项目的,所以在pom文件中引入 
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>${springfox-version}</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>${springfox-version}</version>
</dependency>
2. 首先需要下载一个swagger-codegen-cli.jar 的jar包。链接:https://oss.sonatype.org/content/repositories/snapshots/io/swagger/swagger-codegen-cli/3.0.0-SNAPSHOT/ 文件名太长可自己为他重命名。
3. 书写配置文件 例如:config.json
     { "library": "spring-mvc",    生成的代码支付的类,有jersey1、jersey2、okhttp-gson、resttemplate、resteasy、feign、retrofit、retrofit2等几种类型
       "useRxJava2": "true",
       "developerName": "leix",     //  开发者姓名
       "developerEmail": "",         // 开发者邮件
       "developerOrganization": "albani.com",       //  开发者组织
        "invokerPackage": "com.albani.app",    //  项目包名
        "modelPackage":   "com.albani.app.data.entity",  // 生成的数据模型Java文件包名
        "apiPackage": "com.albani.app.data.api",  //  生成***Api.java文件包名
        "artifactId": "swagger-petstore-retrofit2"
     }
* library,生成的代码支付的类,有jersey1、jersey2、okhttp-gson、resttemplate、resteasy、feign、retrofit、retrofit2等几种类型,我们选择的retrofit2
* developerName,开发者名字,会出现在代码文件里
* developerEmail,开发者邮箱,会出现在代码文件里
* developrOrganization,开发者组织,会出现在代码里
* invokerPackage,项目的包名
* apiPackage,生成的***Api.java文件的包名
* modelPackage,生成的数据模型java文件包名
* dateLibrary,时间使用的类开
* useRxJava,是否使用rxjava生成api接口
* useRxJava2,是否使用rxjava2的方式调用接口,在这里我们设为true
配置完成后打开DOS窗口 输入命令:
java -jar swagger-codegen-cli-laiyijie.jar generate -i main.yaml -l spring -o ./spring -c ./codegen_config/springconfig.json
现在来解释一下参数:  -jar   swagger-codegen-cli-laiyijie.jar所在的路径 绝对路径和相对路径都可以。
                                    -i 指定的swagger.json或者*.yaml 文件对应的位置 本文的是 main.yaml文件
                                    -o 指定代码的生成路径
java -jar swagger-codegen-cli-laiyijie.jar -help 可用来生成帮助文档
java -jar swagger-codegen-cli-laiyijie.jar generate help 生成generate相关帮助命令。
本文的代码生成路劲在Spring目录下,已经是一个完整的maven项目了,我们可以使用mvn clean install 把该项目或者生成的jar包引入仓库内供我们使用。如下是我的生客户端代码的脚本。
#!/bin/sh
set -x
rm -rf spring
cp -r spring_server_config spring
java -jar swagger-codegen-cli-laiyijie.jar generate -i main.yaml -l spring -o ./spring -c ./codegen_config/springconfig.json
cd spring
mvn clean install
此时只要在我们需要使用该项目的pom文件中把上述生成的jar包对应的groupid和 artifactId正确的引入即可。

main.yaml文件:

swagger: '2.0'

info:
  version: "0.0.1"
  title: 测试端接口
  description: |
    ## 错误规则

    ###    401 - 未登录,如果出现这个错误,请调用 登录/自动登录 接口刷新session或者requresttoken
    ###    403 - 权限不足, 一般不会出现这个错误
    ###    417 - 碰到这个错误请将response的body解析为ErrorInfo一般情况是直接将ErrorInfo中的errorMessage 直接展现给用户

#host: bojiu.0lz.net:8080
host: localhost:8888

#basePath: /server/api/v1/

produces:
  - application/json
  - text/plain; charset=utf-8
consumes:
  - application/x-www-form-urlencoded
  - application/json
  - multipart/form-data
  - text/plain; charset=utf-8
  - "*/*"
schemes:
  - http
tags:
    - name: Test
      description: 测试接口
    - name: Normal
      description: 所有人都可以调用的接口,用于资源查看等
    - name: User
      description: 会员的操作相关接口
    - name: Auth
      description: 会员的登录、认证、注册接口
    - name: AdminAuth
      description: 授权号的登录、认证、注册接口
    - name: Author
      description: 授权号的功能
    - name: Admin
      description: 管理端功能,产品相关
    - name: AdminAccount
      description: 账户管理模块

paths:
  /test/info:
    get:
      tags:
        - Test
      summary: 测试接口
      parameters:
        - name: word
          in: query
          description: 你想说的话
          required: true
          type: string
      responses:
        200:
          description: 回复你的信息
          schema:
            title: TestResponse
            type: object
            properties:
              myWord:
                type: string
                description: 返回你说的话
              count:
                type: integer
                format: int64
                description: 返回一个计数
主要实现过程:

接下来把main.yaml文件拷贝,然后到https://editor.swagger.io 放到左侧。如下:

因为mian.ymal文件内容它有自己的语法格式,具体可参考该地址:https://www.gitbook.com/book/huangwenchao/swagger/details

                      
                                     




  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值