SpringBoot結(jié)合Knife4j進(jìn)行API分組授權(quán)管理配置詳解
在現(xiàn)代的微服務(wù)架構(gòu)中,API 文檔和授權(quán)管理是不可或缺的一部分。Knife4j 是一個(gè)基于 Swagger 的增強(qiáng)解決方案,它提供了更豐富的功能和更好的用戶體驗(yàn)。本文將介紹如何在 Spring Boot 應(yīng)用中集成 Knife4j,并進(jìn)行 API 分組和授權(quán)管理配置。
環(huán)境準(zhǔn)備
首先,確保你的項(xiàng)目中已經(jīng)添加了 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 的相關(guān)屬性,包括 API 文檔的路徑、分組配置以及Knife4j的特定設(shè)置:
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: '系統(tǒng)模塊'
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 應(yīng)用中,你需要定義一個(gè)配置類來(lái)配置 OpenAPI 的信息:
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI springShopOpenAPI() {
return new OpenAPI()
.info(new Info().title("API管理系統(tǒng)")
.contact(new Contact().name("xiaohelikesleep").email("2109664977@qq.com"))
.description("API管理系統(tǒng)文檔")
.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 底部版權(quán)信息
通過(guò) knife4j.setting.enable-footer-custom 屬性,你可以自定義 Swagger UI 底部的版權(quán)信息:
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
啟動(dòng)應(yīng)用
在 main 方法中,你可以記錄應(yīng)用啟動(dòng)的信息,包括應(yīng)用名稱、本地 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);
}
運(yùn)行效果:

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("訂單服務(wù)接口文檔")
.version("1.0")
.description("訂單服務(wù)相關(guān)接口"));
}
@Bean
public GroupedOpenApi orderApi() {
return GroupedOpenApi.builder()
.group("訂單服務(wù)")
.pathsToMatch("/order/**")
.packagesToScan("com.example.order.controller")
.build();
}
}
到此這篇關(guān)于SpringBoot結(jié)合Knife4j進(jìn)行API分組授權(quán)管理配置詳解的文章就介紹到這了,更多相關(guān)SpringBoot Knife4j進(jìn)行API分組管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringMVC中的請(qǐng)求參數(shù)接收方式
這篇文章主要介紹了SpringMVC中的請(qǐng)求參數(shù)接收方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
Java concurrency集合之ConcurrentHashMap_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java concurrency集合之ConcurrentHashMap的相關(guān)資料,需要的朋友可以參考下2017-06-06
Java 反射調(diào)用靜態(tài)方法的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇Java 反射調(diào)用靜態(tài)方法的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
java保留小數(shù)的四種實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了java保留小數(shù)的四種實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
IDEA實(shí)現(xiàn)序列化時(shí)如何自動(dòng)生成serialVersionUID的步驟
這篇文章主要介紹了IDEA實(shí)現(xiàn)序列化時(shí)如何自動(dòng)生成serialVersionUID的步驟,首先安裝GenerateSerialVersionUID插件,當(dāng)出現(xiàn)添加serialVersionUID選項(xiàng),選中則會(huì)自動(dòng)生成serialVersionUID,感興趣的朋友一起學(xué)習(xí)下吧2024-02-02
spring boot前后端傳參的實(shí)現(xiàn)
這篇文章主要介紹了spring boot前后端傳參的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
SpringBoot集成Zipkin實(shí)現(xiàn)分布式全鏈路監(jiān)控
這篇文章主要介紹了SpringBoot集成Zipkin實(shí)現(xiàn)分布式全鏈路監(jiān)控的方法啊,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
如何在MyBatis中實(shí)現(xiàn)DataSource
今天給大家整理了如何在MyBatis中實(shí)現(xiàn)DataSource,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下2021-06-06

