在现代的微服务架构中,api 文档和授权管理是不可或缺的一部分。knife4j 是一个基于 swagger 的增强解决方案,它提供了更丰富的功能和更好的用户体验。本文将介绍如何在 spring boot 应用中集成 knife4j,并进行 api 分组和授权管理配置。
环境准备
首先,确保你的项目中已经添加了 knife4j 的依赖:
<dependency>
<groupid>com.github.xiaoymin</groupid>
<artifactid>knife4j-openapi3-jakarta-spring-boot-starter</artifactid>
<version>4.5.0</version>
</dependency>
配置 swagger
在 application.yml 文件中,你可以配置 swagger 的相关属性,包括 api 文档的路径、分组配置以及knife4j的特定设置:
springdoc:
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha
operations-sorter: order
api-docs:
path: /v3/api-docs
group-configs:
- group: '通用模块'
paths-to-match: '/**'
packages-to-scan: com.example.springboot.common.controller
- group: '系统模块'
paths-to-match: '/**'
packages-to-scan: com.example.springboot.system.controller
- group: '用户模块'
paths-to-match: '/**'
packages-to-scan: com.example.springboot.user.controller
knife4j:
enable: true
setting:
language: zh_cn
enable-footer-custom: true
footer-custom-content: "apache license 2.0 | copyright xiao he like sleep"
basic:
enable: true
username: username
password: password
配置 swagger openapi
在 spring boot 应用中,你需要定义一个配置类来配置 openapi 的信息:
@configuration
public class swaggerconfig {
@bean
public openapi springshopopenapi() {
return new openapi()
.info(new info().title("api管理系统")
.contact(new contact().name("xiaohelikesleep").email("2109664977@qq.com"))
.description("api管理系统文档")
.version("v1.0")
.license(new license().name("apache 2.0").url("http://springdoc.org")))
.externaldocs(new externaldocumentation()
.description("外部文档")
.url("https://springshop.wiki.github.org/docs"))
.addsecurityitem(new securityrequirement().addlist(httpheaders.authorization))
.components(new components().addsecurityschemes(
httpheaders.authorization,
new securityscheme()
.name(httpheaders.authorization)
.type(securityscheme.type.http)
.scheme("bearer")
.in(securityscheme.in.header)
.bearerformat("jwt")
));
}
}
自定义 swagger ui 底部版权信息
通过 knife4j.setting.enable-footer-custom 属性,你可以自定义 swagger ui 底部的版权信息:
knife4j:
enable: true
setting:
language: zh_cn
enable-footer-custom: true
footer-custom-content: "apache license 2.0 | copyright xiao he like sleep"
basic:
enable: true
username: 1
password: 1
启动应用
在 main 方法中,你可以记录应用启动的信息,包括应用名称、本地 url 和文档 url:
public static void main(string[] args) {
configurableenvironment env = springapplication.run(apiapplication.class, args).getenvironment();
string applicationname = env.getproperty("spring.application.name");
string serverport = env.getproperty("server.port");
string serverip = env.getproperty("ip");
log.info(
"----------------------------------------------------------%n" +
"application: '%s' is running success!%n" +
"local url: http://{}:{}%n" +
"document: http://{}:{}/doc.html%n" +
"----------------------------------------------------------",
applicationname, serverip, serverport, serverip, serverport);
}
运行效果:

swagger界面:

配置的另一种写法
package com.example.order.config;
import io.swagger.v3.oas.models.openapi;
import io.swagger.v3.oas.models.info.info;
import org.springdoc.core.models.groupedopenapi;
import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
@configuration
public class knife4jconfig {
@bean
public openapi openapi() {
return new openapi().info(new info()
.title("订单服务接口文档")
.version("1.0")
.description("订单服务相关接口"));
}
@bean
public groupedopenapi orderapi() {
return groupedopenapi.builder()
.group("订单服务")
.pathstomatch("/order/**")
.packagestoscan("com.example.order.controller")
.build();
}
}
到此这篇关于springboot结合knife4j进行api分组授权管理配置详解的文章就介绍到这了,更多相关springboot knife4j进行api分组管理内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论