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