编写和维护接口文档是每个程序员的职责,根据Swagger2可以快速帮助我们编写最新的API接口文档,再也不用担心开会前仍忙于整理各种资料了,间接提升了团队开发的沟通效率
swagger可能会遇到的问题:
当我们的接口返回的数据太大的时候,swagger会崩溃
1、引入jar包
<!--接口文档-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.10.5</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.plugin</groupId>
<artifactId>spring-plugin-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.6.0</version>
</dependency>
2、启用swagger application.properties
不用了
#swagger开关
swagger.enable=true
3、配置文件
package com.zkhx.config;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
import java.util.ArrayList;
import java.util.List;
@Configuration // 标明是配置类
@EnableSwagger2WebMvc
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfig {
/**
* Create rest api docket.
*
* @return the docket
*/
@Bean
public Docket createRestApi() {
ParameterBuilder tokenPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<>();
//header中的token参数非必填,传空也可以
tokenPar.name("token").description("请求接口所需Token")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).build();
pars.add(tokenPar.build());
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(metaData())
.select()
.apis(RequestHandlerSelectors.basePackage("com.zkhx.controller"))
.paths(PathSelectors.any())
.build()
.globalOperationParameters(pars);
}
private ApiInfo metaData() {
return new ApiInfoBuilder()
.title("XX服务API文档")
.description("sun")
.termsOfServiceUrl("")
.version("1.0")
.build();
}
}
Docket(DocumentationType.SWAGGER_2) :DocumentationType.SWAGGER_2 固定的,代swagger2
groupName("") // 如果配置多个文档的时候,那么需要配置groupName来分组标识
apiInfo(apiInfo()) // 用于生成API信息
select() // select()函数返回一个ApiSelectorBuilder实例,用来控制接口被swagger做成文档
apis(RequestHandlerSelectors.basePackage("com.example.controller")) // 用于指定扫描哪个包下的接口
paths(PathSelectors.any())// 选择所有的API,如果你想只为部分API生成文档,可以配置这里
apiInfo() :
title("XX项目API") // 可以用来自定义API的主标题
description("XX项目SwaggerAPI管理") // 可以用来描述整体的API
termsOfServiceUrl("") // 用于定义服务的域名
version("1.0") // 可以用来定义版本。
三级目录
@Api(tags = “角色管理”) // tags:你可以当作是这个组的名字。
@RestController
public class RoleController {
}
@RestController
@Slf4j
@RequestMapping("/phm/db")
@Api(tags = "数据筛查")
public class DbController {
@Autowired
private StatusDbService statusDbService;
@GetMapping("/field/data")
@ApiOperation(value = "通过时间及单元id获取数据筛查所需数据")
public ResultMsg getFieldByUnitIdWithTime(
@ApiParam("结束时间") @RequestParam(value = "endTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime);
}
访问
http://localhost:8080/doc.html
到此这篇关于Java详解swagger2如何配置使用的文章就介绍到这了,更多相关Java swagger内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:Java详解swagger2如何配置使用
基础教程推荐
- Java实现线程插队的示例代码 2022-09-03
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java实现查找文件和替换文件内容 2023-04-06
- Java数据结构之对象比较详解 2023-03-07
- java基础知识之FileInputStream流的使用 2023-08-11
- springboot自定义starter方法及注解实例 2023-03-31
- Java并发编程进阶之线程控制篇 2023-03-07
- Java文件管理操作的知识点整理 2023-05-19
- java实现多人聊天系统 2023-05-19
- JDK数组阻塞队列源码深入分析总结 2023-04-18