From cfded0f3375b53be6331485a15dbcc2cebea571a Mon Sep 17 00:00:00 2001 From: MaxKey Date: Mon, 20 Mar 2023 13:43:25 +0800 Subject: [PATCH] swagger with knife4j --- build.gradle | 8 +++--- gradle.properties | 6 ++--- .../maxkey/autoconfigure/SwaggerConfig.java | 26 +++++++++++++++++-- .../maxkey/autoconfigure/MaxKeyMvcConfig.java | 10 ++++--- .../resources/application-maxkey.properties | 14 ++++++++++ .../application-maxkey-mgt.properties | 13 ++++++++++ 6 files changed, 65 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index 53a34e0eb..3bdb26ab9 100644 --- a/build.gradle +++ b/build.gradle @@ -418,8 +418,8 @@ subprojects { implementation group: 'com.fasterxml', name: 'classmate', version: "${classmateVersion}" implementation group: 'com.fasterxml.woodstox', name: 'woodstox-core', version: "${woodstoxVersion}" implementation group: 'com.alibaba', name: 'fastjson', version: "${fastjsonVersion}" - //docs implementation group: 'org.mapstruct', name: 'mapstruct', version: "${mapstructVersion}" + //docs //implementation group: 'io.swagger', name: 'swagger-annotations', version: "${swaggerVersion}" //implementation group: 'io.swagger', name: 'swagger-models', version: "${swaggerVersion}" implementation group: 'io.swagger.core.v3', name: 'swagger-annotations', version: "${swaggerV3Version}" @@ -433,9 +433,11 @@ subprojects { implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: "${springdocVersion}" implementation group: 'org.webjars', name: 'webjars-locator-core', version: '0.48' implementation group: 'org.webjars', name: 'webjars-locator', version: '0.42' - implementation group: 'org.webjars', name: 'swagger-ui', version: '4.1.3' + implementation group: 'org.webjars', name: 'swagger-ui', version: '4.11.1' //knife4j - implementation group: 'com.github.xiaoymin', name: 'knife4j-springdoc-ui', version: "${knife4jVersion}" + implementation group: 'com.github.xiaoymin', name: 'knife4j-core', version: "${knife4jVersion}" + implementation group: 'com.github.xiaoymin', name: 'knife4j-openapi3-ui', version: "${knife4jVersion}" + implementation group: 'com.github.xiaoymin', name: 'knife4j-openapi3-spring-boot-starter', version: "${knife4jVersion}" //local jars implementation fileTree(dir: "${rootDir}/maxkey-lib/", include: '*.jar') diff --git a/gradle.properties b/gradle.properties index 64a22905f..1d0a852b7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -90,9 +90,9 @@ concurrentlinkedhashmaplruVersion =1.4.2 jbossloggingVersion =3.4.3.Final hibernateVersion =6.2.5.Final #doc -swaggerV3Version =2.2.1 -springdocVersion =1.6.13 -knife4jVersion =3.0.3 +swaggerV3Version =2.2.8 +springdocVersion =1.6.15 +knife4jVersion =4.0.0 #database postgresqlVersion =42.4.1 mysqlconnectorjavaVersion =8.0.32 diff --git a/maxkey-core/src/main/java/org/maxkey/autoconfigure/SwaggerConfig.java b/maxkey-core/src/main/java/org/maxkey/autoconfigure/SwaggerConfig.java index 7a5943b07..3bb8fd450 100644 --- a/maxkey-core/src/main/java/org/maxkey/autoconfigure/SwaggerConfig.java +++ b/maxkey-core/src/main/java/org/maxkey/autoconfigure/SwaggerConfig.java @@ -1,8 +1,12 @@ package org.maxkey.autoconfigure; +import java.util.HashMap; +import java.util.Map; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springdoc.core.GroupedOpenApi; +import org.springdoc.core.customizers.GlobalOpenApiCustomizer; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.context.annotation.Bean; @@ -28,6 +32,24 @@ public class SwaggerConfig { @Value("${maxkey.swagger.enable}") boolean enable; + @Bean + public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() { + return openApi -> { + if (openApi.getTags()!=null){ + openApi.getTags().forEach(tag -> { + Map map=new HashMap<>(); + map.put("x-order",1); + tag.setExtensions(map); + }); + } + if(openApi.getPaths()!=null){ + openApi.addExtension("x-test123","333"); + openApi.getPaths().addExtension("x-abb",1); + } + + }; + } + @Bean public GroupedOpenApi userApi(){ String[] paths = { @@ -57,7 +79,7 @@ public class SwaggerConfig { .title(title) .description(description) .version(version) - .termsOfService("https://www.maxkey.top/") + .termsOfService("http://www.maxkey.top/") .license( new License() .name("Apache License, Version 2.0") @@ -67,7 +89,7 @@ public class SwaggerConfig { externalDocs( new ExternalDocumentation() .description("MaxKey.top contact support@maxsso.net") - .url("https://www.maxkey.top/") + .url("http://www.maxkey.top/") ); } } diff --git a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/autoconfigure/MaxKeyMvcConfig.java b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/autoconfigure/MaxKeyMvcConfig.java index 59c71a594..6d6ab4c3f 100644 --- a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/autoconfigure/MaxKeyMvcConfig.java +++ b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/autoconfigure/MaxKeyMvcConfig.java @@ -79,6 +79,7 @@ public class MaxKeyMvcConfig implements WebMvcConfigurer { _logger.debug("add statics"); registry.addResourceHandler("/static/**") .addResourceLocations("classpath:/static/"); + _logger.debug("add templates"); registry.addResourceHandler("/templates/**") .addResourceLocations("classpath:/templates/"); @@ -86,12 +87,13 @@ public class MaxKeyMvcConfig implements WebMvcConfigurer { _logger.debug("add swagger"); registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); - registry.addResourceHandler("/webjars/**") - .addResourceLocations("classpath:/META-INF/resources/webjars/"); _logger.debug("add knife4j"); - registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); - registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); + registry.addResourceHandler("doc.html") + .addResourceLocations("classpath:/META-INF/resources/"); + + registry.addResourceHandler("/webjars/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/"); _logger.debug("add Resource Handler finished ."); } diff --git a/maxkey-webs/maxkey-web-maxkey/src/main/resources/application-maxkey.properties b/maxkey-webs/maxkey-web-maxkey/src/main/resources/application-maxkey.properties index 081ea6b9c..12fae5bca 100644 --- a/maxkey-webs/maxkey-web-maxkey/src/main/resources/application-maxkey.properties +++ b/maxkey-webs/maxkey-web-maxkey/src/main/resources/application-maxkey.properties @@ -276,6 +276,20 @@ maxkey.swagger.title =MaxKey\u5355\u70b9\u767b\u5f55\ maxkey.swagger.description =MaxKey\u5355\u70b9\u767b\u5f55\u8ba4\u8bc1\u7cfb\u7edfAPI\u6587\u6863 maxkey.swagger.version =${application.formatted-version} +springdoc.swagger-ui.path =/swagger-ui.html +springdoc.swagger-ui.enabled =true +springdoc.swagger-ui.tags-sorter =alpha +springdoc.swagger-ui.operations-sorter =alpha +springdoc.swagger-ui.showExtensions =true +springdoc.api-docs.path =/v3/api-docs +springdoc.group-configs[0].group =default +springdoc.group-configs[0].paths-to-match =/* +springdoc.group-configs[0].packages-to-scan =org.maxkey + +knife4j.enable =true +knife4j.setting.language =zh_cn +knife4j.setting.swagger-model-name =\u5B9E\u4F53\u7C7B\u5217\u8868 + ############################################################################ #freemarker configuration # ############################################################################ diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/application-maxkey-mgt.properties b/maxkey-webs/maxkey-web-mgt/src/main/resources/application-maxkey-mgt.properties index 9ecc9c290..a75528034 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/resources/application-maxkey-mgt.properties +++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/application-maxkey-mgt.properties @@ -212,6 +212,19 @@ maxkey.swagger.title =MaxKey\u5355\u70b9\u767b\u5f55\ maxkey.swagger.description =MaxKey\u5355\u70b9\u767b\u5f55\u8ba4\u8bc1\u7cfb\u7edfAPI\u6587\u6863 maxkey.swagger.version =${application.formatted-version} +springdoc.swagger-ui.path =/swagger-ui.html +springdoc.swagger-ui.enabled =true +springdoc.swagger-ui.tags-sorter =alpha +springdoc.swagger-ui.operations-sorter =alpha +springdoc.swagger-ui.showExtensions =true +springdoc.api-docs.path =/v3/api-docs +springdoc.group-configs[0].group =default +springdoc.group-configs[0].paths-to-match =/* +springdoc.group-configs[0].packages-to-scan =org.maxkey + +knife4j.enable =true +knife4j.setting.language =zh_cn +knife4j.setting.swagger-model-name =\u5B9E\u4F53\u7C7B\u5217\u8868 ############################################################################ #freemarker configuration # ############################################################################