From d8a687741273d121586b83745280c57f7e9d3297 Mon Sep 17 00:00:00 2001 From: XiaoRuby <3114200645@qq.com> Date: 星期一, 07 八月 2023 17:51:28 +0800 Subject: [PATCH] Merge branch 'master' of https://gitee.com/yuanchu_code/lims-management-system --- framework/src/main/java/com/yuanchu/limslaboratory/config/Swagger3.java | 122 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 122 insertions(+), 0 deletions(-) diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/config/Swagger3.java b/framework/src/main/java/com/yuanchu/limslaboratory/config/Swagger3.java new file mode 100644 index 0000000..7e2671f --- /dev/null +++ b/framework/src/main/java/com/yuanchu/limslaboratory/config/Swagger3.java @@ -0,0 +1,122 @@ +package com.yuanchu.limslaboratory.config; + + +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.oas.annotations.EnableOpenApi; +import springfox.documentation.service.*; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; +import springfox.documentation.spring.web.plugins.Docket; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +@Configuration +@EnableOpenApi +public class Swagger3 { + // 璺緞http://localhost:8080/doc.html + @Value("${swagger.enabled}") + private boolean enable; + + private final String swaggerPackage = "com.yuanchu.limslaboratory"; + + /** + * 娣诲姞鎽樿淇℃伅 + */ + private ApiInfo apiInfo() { + // 鐢ˋpiInfoBuilder杩涜瀹氬埗 + return new ApiInfoBuilder() + // 璁剧疆鏍囬 + .title("LIMS绠$悊绯荤粺") + // 鎻忚堪 + .description("LIMS绠$悊绯荤粺") + // 浣滆�呬俊鎭� + .contact(new Contact("Crunchy", null, null)) + // 鐗堟湰 + .version("鐗堟湰鍙�:V.1") + //鍗忚 + .license("The Apache License") + //鍗忚url + .licenseUrl("http://www.baidu.com") + .build(); + } + + /** + * 鍒涘缓API + * http:IP:绔彛鍙�/swagger-ui/index.html 鍘熺敓鍦板潃 + * http:IP:绔彛鍙�/doc.html bootStrap-UI鍦板潃 + */ + @Bean + public Docket createRestApi() { + return new Docket(DocumentationType.OAS_30).pathMapping("/") + // 鐢ㄦ潵鍒涘缓璇PI鐨勫熀鏈俊鎭紝灞曠ず鍦ㄦ枃妗g殑椤甸潰涓紙鑷畾涔夊睍绀虹殑淇℃伅锛� + .enable(enable) + .apiInfo(apiInfo()) + // 璁剧疆鍝簺鎺ュ彛鏆撮湶缁橲wagger灞曠ず + .select() + // 鎵弿鎵�鏈夋湁娉ㄨВ鐨刟pi锛岀敤杩欑鏂瑰紡鏇寸伒娲� + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) + + + // 鎵弿鎸囧畾鍖呬腑鐨剆wagger娉ㄨВ + .apis(RequestHandlerSelectors.basePackage(swaggerPackage)) + // 鎵弿鎵�鏈� .apis(RequestHandlerSelectors.any()) + .paths(PathSelectors.regex("(?!/ApiError.*).*")) + .paths(PathSelectors.any()) + .build() + // 鏀寔鐨勯�氳鍗忚闆嗗悎 + .protocols(newHashSet("https", "http")) + .securitySchemes(securitySchemes()) + .securityContexts(securityContexts()); + } + + /** + * 鏀寔鐨勯�氳鍗忚闆嗗悎 + * @param type1 + * @param type2 + * @return + */ + private Set<String> newHashSet(String type1, String type2){ + Set<String> set = new HashSet<>(); + set.add(type1); + set.add(type2); + return set; + } + + /** + * 璁よ瘉鐨勫畨鍏ㄤ笂涓嬫枃 + */ + private List<SecurityScheme> securitySchemes() { + List<SecurityScheme> securitySchemes = new ArrayList<>(); + securitySchemes.add((SecurityScheme) new ApiKey("token", "token", "header")); + return securitySchemes; + } + + /** + * 鎺堟潈淇℃伅鍏ㄥ眬搴旂敤 + */ + private List<SecurityContext> securityContexts() { + List<SecurityContext> securityContexts = new ArrayList<>(); + securityContexts.add(SecurityContext.builder() + .securityReferences(defaultAuth()) + .forPaths(PathSelectors.any()).build()); + return securityContexts; + } + + private List<SecurityReference> defaultAuth() { + AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); + AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; + authorizationScopes[0] = authorizationScope; + List<SecurityReference> securityReferences = new ArrayList<>(); + securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); + return securityReferences; + } +} -- Gitblit v1.9.3