Spring Boot 应用结合 Knife4j 进行 API 分组授权管理配置

🌟 前言

欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍

Knife4j API 分组授权管理配置

  • [Spring Boot 应用结合 Knife4j 进行 API 分组授权管理配置](#Spring Boot 应用结合 Knife4j 进行 API 分组授权管理配置)
    • 😭写在前面
    • 环境准备
    • [配置 Swagger](#配置 Swagger)
    • [配置 Swagger OpenAPI](#配置 Swagger OpenAPI)
    • [自定义 Swagger UI 底部版权信息](#自定义 Swagger UI 底部版权信息)
    • 启动应用
    • [🚀 获取笔记](#🚀 获取笔记)

Spring Boot 应用结合 Knife4j 进行 API 分组授权管理配置

在现代的微服务架构中,API 文档和授权管理是不可或缺的一部分。Knife4j 是一个基于 Swagger 的增强解决方案,它提供了更丰富的功能和更好的用户体验。本文将介绍如何在 Spring Boot 应用中集成 Knife4j,并进行 API 分组和授权管理配置。

😭写在前面

兄弟们,最近Gitee账号被无缘无故封号了,和客服博弈了好几个回合都没有解封,有没有兄弟知道怎么解决的啊。

招呼都打一声账号就没了,就说我打广告了。bestwishes0203全系下线了,xiaohelikesleep是我的新账号。

还是得继续学习,继续写代码啊,我太想进步了。

环境准备

首先,确保你的项目中已经添加了 Knife4j 的依赖:

xml 复制代码
<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的特定设置:

yaml 复制代码
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 的信息:

java 复制代码
@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 底部的版权信息:

yaml 复制代码
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:

java 复制代码
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界面:

配置的另一种写法

java 复制代码
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();
    }
}

🚀 获取笔记

如果对你有帮助,点赞👍、收藏💖、关注🔔是我更新的动力!👋🌟🚀

相关推荐
Jinkxs1 小时前
基础14-Java集合框架:掌握List、Set和Map的使用
java·list
你的人类朋友1 小时前
✨什么是SaaS?什么是多租户?
后端·架构·设计
遗憾皆是温柔2 小时前
3.JVM,JRE和JDK的关系是什么
java·开发语言·jvm·面试
M1A12 小时前
全球语言无障碍:Unicode标准解读与技术演进史
后端
无限大62 小时前
多数元素问题:从暴力美学到摩尔投票神仙解法
后端
无限大62 小时前
《计算机“十万个为什么”》之 面向对象 vs 面向过程:编程世界的积木与流水线
后端
亲爱的非洲野猪2 小时前
ZooKeeper 深度实践:从原理到 Spring Boot 全栈落地
spring boot·zookeeper·java-zookeeper
Livingbody2 小时前
基于ERNIE-4.5-0.3B医疗领域大模型一站式分布式训练部署
后端
程序员爱钓鱼3 小时前
Go语言实战案例:使用sync.Mutex实现资源加锁
后端·go·trae