浏览代码

swagger with knife4j

MaxKey 2 年之前
父节点
当前提交
cfded0f337

+ 5 - 3
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')

+ 3 - 3
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

+ 24 - 2
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;
@@ -29,6 +33,24 @@ public class SwaggerConfig {
     boolean enable;
 
     @Bean
+    public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() {
+        return openApi -> {
+            if (openApi.getTags()!=null){
+                openApi.getTags().forEach(tag -> {
+                    Map<String,Object> 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 = { 
         		"/login",
@@ -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/")
 				);
 	}
 }

+ 6 - 4
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 .");
     }

+ 14 - 0
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                                                  #
 ############################################################################

+ 13 - 0
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                                                  #
 ############################################################################