当前位置: 代码网 > it编程>编程语言>Java > SpringBoot结合Knife4j进行API分组授权管理配置详解

SpringBoot结合Knife4j进行API分组授权管理配置详解

2025年08月04日 Java 我要评论
在现代的微服务架构中,api 文档和授权管理是不可或缺的一部分。knife4j 是一个基于 swagger 的增强解决方案,它提供了更丰富的功能和更好的用户体验。本文将介绍如何在 spring boo

在现代的微服务架构中,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分组管理内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com