dawdler-client-api-generator
模块介绍
基于java源码doc生成兼容swagger-ui的OpenAPI 3.0的json工具,对源代码零侵入,上手简单,生成效率高,使用非常方便.
1. pom中引入依赖
<groupId>club.dawdler</groupId>
<artifactId>dawdler-client-api-generator</artifactId>
2. dawdler-web-api.yml配置文件说明
例:
version: 1.0
title: "订单web服务"
description: "订单web服务文档"
contact:
name: "jackson.song"
email: "suxuan696@gmail.com"
url: "https://github.com/srchen1987"
openApi: "3.1.0"
servers:
- url: http://localhost:8085
description: 本地服务器
- url: https://api.example.com
description: 生产服务器
- url: https://staging.example.com
description: 测试服务器
scanPath:
- "/home/srchen/github/simple-single-user-web-api/src/main/java/club/dawdler/user"
- "/home/srchen/github/dawdler-series-jdk21/dawdler-series/dawdler/dawdler-load-bean/src/main/java"
outPath: "/home/srchen/github/api-demo/upload-api.json"
说明:
| 名称 | 说明 |
|---|---|
| version | 版本号 |
| title | 标题 |
| description | 描述 |
| contact | 联系人 相关信息 |
| openApi | openApi版本号 |
| servers | api地址,例如: 192.168.1.55:8080 |
| scanPath | 扫描路径,Controller或实体对象(数组结构) |
| outPath | 输出json的路径 |
3. 使用方法
3.1 基础配置
参考dawdler-web-api.yml文件进行配置,确保scanPath配置正确.
3.2 必要条件
scanPath配置一定要配置正确,确保路径下有Controller(必须使用@Controller注解的才会生效).
方法返回值需要使用@ResponseBody标注,如果非基础类型或String或BigDecimal则需要在scanPath内才会生效.
方法参数值使用@RequestBody标注的对象需要在scanPath内才会生效.
返回的对象需要有@ResponseBody标注,如果不支持的类型则不会解析,比如Map.
3.3 生成api文件
java -jar dawdler-client-api-generator-xxx-RELEASES.jar /home/srchen/github/api-demo/dawdler-web-api.yml
运行后会生成demo-api.json(outPath配置的路径).
3.4 启动swagger-ui
拉取docker镜像
docker pull swaggerapi/swagger-ui
启动
docker run -p 80:8080 -e BASE_URL=/swagger -e SWAGGER_JSON=/foo/demo-api.json -e DEFAULT_RESPONSES_EXPAND_DEPTH=10 -e DEFAULT_MODELS_EXPAND_DEPTH=10 -e DEFAULT_MODEL_EXPAND_DEPTH=10 -v /home/srchen/github/api-demo:/foo swaggerapi/swagger-ui
访问 http://localhost/swagger 既可使用.
4. 已支持javaDoc的Tag/注解/对象
4.1 JavaDoc的Tag
-
用于类或方法的描述信息,支持放在类上或方法上.(同时支持javadoc标准 方法上注释)
-
@param 用于方法参数对应的注释信息,只支持方法上.
注释上有 @param userId 用户ID, 方法参数列表中的userId就会被备注为名字.
例如:
/**
* @author jackson.song
* 根据用户ID查询用户
* @param userId 用户ID
*
*/
@RequestMapping(value = "/user/get",method = RequestMethod.GET)
@ResponseBody
public User get(String userId){
return null;
}
4.2 dawdler-client-plug的注解
-
@Controller 标识一个类为Controller,只有此标识才会被扫描生成文档,用于类上.
-
@RequestMapping 标识设置请求api的path,只有此标识才会被扫描生成文档,支持设置类上和方法上.
-
@RequestParam 指定request请求参数名的注解,可以用搭配@param来做注释,注意RequestParam中的value需要与@param的值对应才生效.
-
@PathVariable 获取pathVariable的变量,用于方法参数列表中,可以用搭配@param来做注释.
-
@RequestHeader 获取head中的值,用于方法参数列表中,可以搭配@param来做注释.
-
@RequestBody 标识一个对象通过http body方式传入.
-
@ResponseBody 标识返回对象.