swagger2
swagger是一个统一前后端的好工具,可以用来规划客户端API的访问控制,可用来规划服务端的接口开发。通常情况下我们很羡慕那些基于WS/SOAP协议服务的人,他们可以很轻松的基于WSDL接口规范生成一个客户端的API,这样大大的简化了服务的调用。
如何使用swagger-codegen-cli来生成对应的客户端和服务端代码呢?接下来就是见证奇迹的时刻.
1. 首先笔者是使用了maven来构建项目的,所以在pom文件中引入
io.springfox
${springfox-version}
io.springfox
${springfox-version}
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