
SpringBoot整合Swagger2,再也不用维护接口文档了!
发布日期:2021-05-10 03:42:16
浏览次数:30
分类:精选文章
本文共 4098 字,大约阅读时间需要 13 分钟。
在项目中集成 Swagger2 以外的 Document Framework(如 Knife4j), 需要按照以下步骤进行配置:
1. 添加依赖
在项目的 pom.xml
文件中加入 Knife4j 的 Spring Boot 启动器依赖。
com.github.xiaoymin knife4j-spring-boot-starter 2.0.7
2. 配置 Swagger 文档
创建一个 Swagger 配置类,扩展开宠?
import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;import lombok.AllArgsConstructor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import springfox.documentation.builders.ApiInfoBuilder;import springfox.documentation.builders.PathSelectors;import springfox.documentation.builders.RequestHandlerSelectors;import springfox.documentation.spi.DocumentationType;import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;@Configuration(proxyBeanMethods = false)@EnableSwagger2WebMvc@AllArgsConstructorpublic class DocumentConfig { private final OpenApiExtensionResolver openApiExtensionResolver; @Bean public Docket appDocket() { return new Docket(DocumentationType.SWAGGER_2) .pathMapping("/") // Swagger 文档路径 .apiInfo(new ApiInfoBuilder() .title("API 接口") // 文档标题 .build()) // 配置完成后构建 ApiInfo 包括 title, description 等信息 .groupName("API") // 文档分组 .select() // 定义怎样选择接口 .apis(RequestHandlerSelectors.basePackage("com.wolf.api.controller")) // 扫描特定路径下的接口 .paths(PathSelectors.any()) // 所有路径都会被选中 .build() // 构建 Swagger 文档 .extensions(openApiExtensionResolver.buildExtensions("other")); // 扩展功能配置,默认为 "other" }}
3. 配置静态资源过滤
在 SpringMVCConfig
类中添加资源过滤配置,确保 Swagger 文档可以被正确访问。
import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.ImportResource;import org.springframework.web.servlet_ResourceHandlerή;@Configurationpublic class SpringMVCConfig extends WebMvcConfigurationSupport { @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry // 将所有静态资源映射到根路径 .addResourceHandler("/**") // 指定资源所在的路径, 这里的 /index.html 可以根据需要调整 .addResourceLocations("/", new String[]{"classpath:/index.html"}, new String[]{"classpath:/public/index.html"}); }}
4. 新增 application.yml 中的配置
在 application.yml
中添加 Swagger 文档相关配置, 处理权限放行:
# 配置 Swagger 文档启用knife4j: enable: true# 配置图文文档documents: - group: other locations: classpath: markdown/* name: 其他文档# 其他配置, 包括权限配置auth: cache-prefix: ${spring.application.name} ignore: urls: - /api-docs/** # Swagger 文档路径 - /other/** - /webjars/** - /**
5. 接口注解配置
在需要展示 Swagger 文档的接口中使用相关注解。
@RestController@Api(tags = "用户管理接口")@RequestMapping("/user")public class UserController { @PostMapping("/") @ApiOperation("添加用户接口") @ApiImplicitParams({ @ApiImplicitParam(name = "username", value = "用户名", defaultValue = "李四", required = true), @ApiImplicitParam(name = "address", value = "用户地址", defaultValue = "深圳", required = true) }) public RespBean addUser( @RequestParam(name = "username", required = true) String username, String address ) { return new RespBean(); } @GetMapping("/") @ApiOperation("查询用户接口") @ApiImplicitParam(name = "id", value = "用户编号", defaultValue = "99", required = true) public User getUserById( @PathVariable(name = "id") Integer id ) { User user = new User(); user.setId(id); return user; } @PutMapping("/{id}") @ApiOperation("修改用户接口") public User updateUserById( @RequestBody User user ) { return user; }}
6. 注意事项
- 依赖版本:确保添加的 knife4j-spring-boot-starter 的版本与项目需求匹配。
- 文档扩展:如果需要额外的 markdown 文档, 创建相应的 markdown 文件放在项目根目录。
- 权限配置:如果项目使用权限框架, 确保 Swagger 文档路径未被过滤.
- 资源映射:静态资源的映射路径需与 Swagger 文档路径兼容即可.
建立完上述配置后, 应该能够ativas 生成 markdown 格式的 Swagger 文档, 并在应用启动后可通过指定 URL 访问.
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月27日 17时38分52秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MFC 自定义消息发送字符串
2019-03-12
Linux操作系统的安装与使用
2019-03-12
C++ 继承 详解
2019-03-12
OSPF多区域
2019-03-12
Docker入门之-镜像(二)
2019-03-12
数据结构——链表(3)
2019-03-12
socket模块和粘包现象
2019-03-12
去了解拉绳位移编码器的影响因素
2019-03-12
无法初始化Winsock2.2处理
2019-03-12
vMotion 操作失败进度卡在14% ,报错: Operation Timed out
2019-03-12
重置UAG Application admin密码
2019-03-12
Horizon Daas租户管理平台扩展分配时报:内部错误
2019-03-12
项目计划甘特图绘制说明
2019-03-12
嵌入式系统试题库(CSU)
2019-03-12
【自考】之信息资源管理(一)
2019-03-12
setup facatory9.0打包详细教程(含静默安装和卸载)
2019-03-12
ionic4 路由跳转传值
2019-03-12
pwn题shellcode收集
2019-03-12
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12