From a097212650a59e5c88f0e74e015f0ed5b1ecceee Mon Sep 17 00:00:00 2001 From: lwj <3529558005@qq.com> Date: Mon, 19 Aug 2024 20:52:52 +0800 Subject: [PATCH] =?UTF-8?q?feat()=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 46 ++++++++++++ pom.xml | 34 +++++++++ .../api/doc/config/SpringDocConfig.java | 74 +++++++++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + 4 files changed, 155 insertions(+) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java create mode 100644 src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..09bdfea --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +###################################################################### +# Build Tools + +.gradle +/build/ +!gradle/wrapper/gradle-wrapper.jar + +target/ +!.mvn/wrapper/maven-wrapper.jar + +###################################################################### +# IDE + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### JRebel ### +rebel.xml +### NetBeans ### +nbproject/private/ +build/* +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ + +###################################################################### +# Others +*.log +*.xml.versionsBackup +*.swp + +!*/build/*.java +!*/build/*.html +!*/build/*.xml \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e5cf0d7 --- /dev/null +++ b/pom.xml @@ -0,0 +1,34 @@ + + + + com.muyu + cloud-common + 3.6.3 + + 4.0.0 + + cloud-common-api-doc + 3.6.3 + + + cloud-common-api-doc系统接口 + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + + + + diff --git a/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java b/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java new file mode 100644 index 0000000..63a2470 --- /dev/null +++ b/src/main/java/com/muyu/common/api/doc/config/SpringDocConfig.java @@ -0,0 +1,74 @@ +package com.muyu.common.api.doc.config; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.ExternalDocumentation; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import org.springdoc.core.customizers.GlobalOpenApiCustomizer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpHeaders; + +@Configuration +public class SpringDocConfig { + + @Value("${spring.application.name}") + private String applicationName; + + private Info info(){ + return new Info() + .title(String.format("%S-微服务接口文档", applicationName)) + .description("微服务接口文档,根据此接口文档可以进行前后端功能对接/联调") + .version("v1.0.0"); + } + private ExternalDocumentation externalDocumentation() { + return new ExternalDocumentation() + .description("服务总站") + .url("https://gitea.qinmian.online"); + } + + @Bean + public OpenAPI springShopOpenAPI() { + return new OpenAPI() + .info(info()) + .externalDocs(externalDocumentation()) + .components(new Components() + .addSecuritySchemes(HttpHeaders.AUTHORIZATION, + new SecurityScheme() + .name(HttpHeaders.AUTHORIZATION) + .type(SecurityScheme.Type.APIKEY) + .in(SecurityScheme.In.HEADER) + .scheme("Bearer") + .bearerFormat("JWT") + ) + ); + + } + + + @Bean + public GlobalOpenApiCustomizer globalOpenApiCustomizer() { + return openApi -> { + // 全局添加鉴权参数 + if (openApi.getPaths() != null) { + openApi.getPaths().forEach((s, pathItem) -> { + // 登录接口/验证码不需要添加鉴权参数 + if (s.equals("/login") || s.equals("/code")|| s.equals("/register")) { + return; + } + // 接口添加鉴权参数 + pathItem.readOperations() + .forEach(operation -> + operation.addSecurityItem(new SecurityRequirement().addList(HttpHeaders.AUTHORIZATION)) + ); + }); + } + }; + } + + + +} diff --git a/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..4b1b17b --- /dev/null +++ b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.muyu.common.api.doc.config.SpringDocConfig \ No newline at end of file