From e43b2781403c4e2568a369df67db08e08c6879e7 Mon Sep 17 00:00:00 2001 From: haoxr <1490493387@qq.com> Date: Fri, 17 Feb 2023 18:51:50 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20springboot3=20+=20knife4j=20?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E6=B7=BB=E5=8A=A0token=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../youlai/system/config/SwaggerConfig.java | 82 ++++++++++++------- 1 file changed, 51 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/youlai/system/config/SwaggerConfig.java b/src/main/java/com/youlai/system/config/SwaggerConfig.java index 2d35b6bd..aa444e03 100644 --- a/src/main/java/com/youlai/system/config/SwaggerConfig.java +++ b/src/main/java/com/youlai/system/config/SwaggerConfig.java @@ -1,54 +1,74 @@ package com.youlai.system.config; -import cn.hutool.core.util.RandomUtil; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; -import org.springdoc.core.customizers.GlobalOpenApiCustomizer; +import io.swagger.v3.oas.models.parameters.Parameter; +import io.swagger.v3.oas.models.security.SecurityScheme; +import org.springdoc.core.customizers.OperationCustomizer; +import org.springdoc.core.models.GroupedOpenApi; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpHeaders; -import java.util.HashMap; -import java.util.Map; - - +/** + * 接口文档配置 + * + * @author haoxr + * @date 2023/2/17 + */ @Configuration public class SwaggerConfig { + /** - * 根据@Tag 上的排序,写入x-order + * 接口分组-系统接口 * - * @return the global open api customizer + * @param operationCustomizer + * @return */ @Bean - public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() { - return openApi -> { - if (openApi.getTags() != null) { - openApi.getTags().forEach(tag -> { - Map map = new HashMap<>(); - map.put("x-order", RandomUtil.randomInt(0, 100)); - tag.setExtensions(map); - }); - } - if (openApi.getPaths() != null) { - openApi.addExtension("x-test123", "333"); - openApi.getPaths().addExtension("x-abb", RandomUtil.randomInt(1, 100)); - } - - }; + public GroupedOpenApi systemApi(OperationCustomizer operationCustomizer) { + return GroupedOpenApi.builder() + .group("系统接口") + .packagesToScan("com.youlai.system.controller") + .pathsToMatch( "/api/**") + .addOperationCustomizer(operationCustomizer) + .build(); } + /** + * 鉴权 + * + * @return + */ @Bean - public OpenAPI customOpenAPI() { - return new OpenAPI() - .info(new Info() - .title("XXX用户系统API") - .version("1.0") + public OperationCustomizer operationCustomizer() { + return (operation, handlerMethod) -> operation.addParametersItem( + new Parameter() + .in(SecurityScheme.In.HEADER.toString()) + .name(HttpHeaders.AUTHORIZATION) + .required(true) + .description("token 校验")); + } - .description("Knife4j集成springdoc-openapi示例") - .termsOfService("http://doc.xiaominfo.com") + + /** + * 接口信息 + * + * @return + */ + @Bean + public OpenAPI apiInfo() { + return new OpenAPI().info( + new Info() + .title("youlai-boot接口文档") + .version("0.0.1") + .description("youlai-boot接口文档") .license(new License().name("Apache 2.0") - .url("http://doc.xiaominfo.com"))); + .url("https://www.youlai.tech") + ) + ); } }