赞
踩
maven支持继承和组合
book-swagger2 #父
--book-common #子模块 组合方式访问domain
--book-domain #子模块
--book-bk
book-swagger2
的pom.xml
中添加依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.13</version> </parent> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
book-bk
模块在pom.xml
中引入book-common
,book-domain
模块和相关依赖
<dependency> <groupId>com.yang.swagger.common</groupId> <artifactId>book-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.yang.swagger.domain</groupId> <artifactId>book-domain</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency>
Swagger是一组围绕 OpenAPI 规范构建的开源工具,可帮助您设计、构建、记录和使用 REST API。主要的 Swagger 工具包括:Swagger Editor – 基于浏览器的编辑器,您可以在其中编写 OpenAPI 规范。Swagger UI – 将 OpenAPI 规范呈现为交互式 API 文档。swagger2于17年停止维护,现在最新的版本为 Swagger3(Open Api3)。
Spring Boot版本 | Knife4j Swagger2规范 | Knife4j OpenAPI3规范 |
---|---|---|
1.5.x~2.0.0 | <Knife4j 2.0.0 | >=Knife4j 4.0.0 |
2.0~2.2 | Knife4j 2.0.0 ~ 2.0.6 | >=Knife4j 4.0.0 |
2.2.x~2.4.0 | Knife4j 2.0.6 ~ 2.0.9 | >=Knife4j 4.0.0 |
2.4.0~2.7.x | >=Knife4j 4.0.0 | >=Knife4j 4.0.0 |
>= 3.0 | >=Knife4j 4.0.0 | >=Knife4j 4.0.0 |
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
<version>4.1.0</version>
</dependency>
knife4j:
enable: true #此项必配置,否则knife4j运行有问题
openapi:
title: knife4j项目的名称
description: knife4j项目的描述
email: 项目邮箱
concat: 贡献者名称
url: 项目的地址
license: Apache 2.0
license-url: http://www.apache.org/licenses/LICENSE-2.0
terms-of-service-url: https://www.bilibili.com/video/BV1tK411y7Uf/
tips: 配置除enable,其它测试阶段可以省略。
在返回对象上使用
在HttpResp(用户封装返回对象的类)
序列 | 注解 | 作用 |
---|---|---|
1 | @ApiModel | 用对象来接收参数 |
2 | @ApiModelProperty | 用对象接收参数时,描述对象的一个字段 |
序列 | 注解 | 作用 |
---|---|---|
1 | @Api(tags = “Knife4jController接口类”) | |
2 | @Api | 修饰整个类,描述api(Controller)的作用 |
3 | @ApiOperation | 描述一个类的一个方法,或者说一个接口 |
4 | @ApiImplicitParam | 多个请求参数的描述信息 |
5 | @ApiImplicitParam(name = “name”,value=”请求的名称”,required = true) | 单个参数的描述信息 |
6 | @ApiIgnore | 使用该注解忽略这个API |
7 | @ApiError | 发生错误返回的信息 |
序列 | 属性 | 值 | 作用 |
---|---|---|---|
1 | paramType | 查询参数类型 | |
path | 以地址形式提交数据 | ||
query | 直接跟参数完成映射赋值 | ||
body | 以流的形式提交 仅支持POST | ||
header | 参数在request headers里面提交 | ||
form | 以form表单的形式提交,仅支持POST | ||
2 | dataType | 参数的数据类型 只为标志说明 并没有实际验证 | |
Long | |||
String | |||
3 | name | 接收参数名 | |
4 | value | 接收参数的意义描述 | |
5 | required | 参数是否必填 | |
true | 必填 | ||
false | 非比填 | ||
6 | defaultValue | 默认值 |
数据, 时间, 代码, 信息
code, msg, data,time
@Data
@NoArgsConstructor
@AllArgsConstructor
public class HttpResult<T> {
private int code;
private String msg;
private T result;
private LocalDate time;
}
这是简易版,一般这些信息需要通过
Enum
枚举类定义响应状态码,HttpResult
获取响应状态码,然后把时间和信息封装后返回
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Type {
private Integer id;
private String name;
private String createBy;
private Date createTime;
private Date updateTime;
}
@Api(tags = "图书类型接口") @RestController @RequestMapping("/api/type") @Slf4j public class TypeController { @Autowired private IBookService ibs; private int total = 0; @ApiOperation(value = "findAll", notes = "对所有图书类型查询") @GetMapping("/findAll") public HttpResult<Integer> findAll() { total += 1; log.debug("total:{}", total); return new HttpResult<>(200, "success", total, LocalDate.now()); // public HttpResult<List<Type>> findAll() { // List<Type> list = new ArrayList<>(20); // for (int i = 1; i <= 100; i++) { // list.add(new Type(i, "type_" + i, "admin", new Date(), new Date())); // } // log.debug("查询所有图书类型数量{}", list.size()); // return new HttpResult<>(200, "success", list, LocalDate.now()); } @ApiOperation(value = "addType", notes = "添加新图书类型接口") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "请输入新图书类型名称", required = true) }) @PostMapping("/addType") public HttpResult<String> addType(String name) { log.debug("添加新的类型:{}", name); return new HttpResult<>(200, "success", name, LocalDate.now()); } @ApiOperation(value = "uploadExcel", notes = "上传excel文件进行解析") @ApiImplicitParams({ @ApiImplicitParam(value = "上传文件", required = true) }) @PostMapping("/uploadExcel") public HttpResult<String> uploadExcel(@RequestPart @RequestParam("excel") MultipartFile excel) { String originalFilename = excel.getOriginalFilename(); log.debug("上传文件名称:{}", originalFilename); return new HttpResult<>(200, "success", originalFilename + "上传成功", LocalDate.now()); } @ApiOperation(value = "qiang", notes = "抢购图书") @PutMapping("/qiang") public HttpResult<Integer> qiang() { int retValue; try { retValue = ibs.qiangGou(); log.debug("retValue:{}", retValue); } catch (Exception e) { return new HttpResult<>(500, e.getMessage(), -1, LocalDate.now()); } return new HttpResult<>(200, "抢购成功", retValue, LocalDate.now()); } }
http://localhost:<端口>/doc.html
上述图表示 1s请求100次 执行1次
http请求填写如图所示,内容编码可不填写
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。