diff --git a/src/main/java/com/spring4all/swagger/DocketConfiguration.java b/src/main/java/com/spring4all/swagger/DocketConfiguration.java index 58bbf7f..8330566 100644 --- a/src/main/java/com/spring4all/swagger/DocketConfiguration.java +++ b/src/main/java/com/spring4all/swagger/DocketConfiguration.java @@ -1,12 +1,16 @@ package com.spring4all.swagger; import com.google.common.base.Predicates; +import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.builders.RequestParameterBuilder; +import springfox.documentation.schema.ScalarType; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; +import springfox.documentation.service.RequestParameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; @@ -14,6 +18,9 @@ import java.util.Collections; import java.util.List; import java.util.function.Predicate; +import java.util.stream.Collectors; + +import static java.util.Collections.singletonList; /** * @author 翟永超 @@ -54,13 +61,36 @@ public Docket createRestApi() { // 需要生成文档的接口目标配置 Docket docket = builder.select() - .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage())) // 通过扫描包选择接口 - .paths(paths(swaggerProperties)) // 通过路径匹配选择接口 - .build(); + // 通过扫描包选择接口 + .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage())) + // 通过路径匹配选择接口 + .paths(paths(swaggerProperties)) + .build() + .globalRequestParameters(globalRequestParameters(swaggerProperties)); return docket; } + + /** + * 全局请求参数 + * + * @param swaggerProperties {@link SwaggerProperties} + * @return RequestParameter {@link RequestParameter} + */ + private List globalRequestParameters(SwaggerProperties swaggerProperties) { + return swaggerProperties.getGlobalOperationParameters().stream().map(param -> { + return new RequestParameterBuilder() + .name(param.getName()) + .description(param.getDescription()) + .in(param.getParameterType()) + .required(param.getRequired()) + .query(q -> q.defaultValue(param.getModelRef())) + .query(q -> q.model(m -> m.scalarModel(ScalarType.STRING))) + .build(); + }).collect(Collectors.toList()); + } + /** * API接口路径选择 * @@ -74,13 +104,13 @@ private Predicate paths(SwaggerProperties swaggerProperties) { if (swaggerProperties.getBasePath().isEmpty()) { swaggerProperties.getBasePath().add("/**"); } - List> basePath = new ArrayList(); + List> basePath = new ArrayList<>(); for (String path : swaggerProperties.getBasePath()) { basePath.add(PathSelectors.ant(path)); } // exclude-path处理 - List> excludePath = new ArrayList(); + List> excludePath = new ArrayList<>(); for (String path : swaggerProperties.getExcludePath()) { excludePath.add(PathSelectors.ant(path)); } diff --git a/src/main/java/com/spring4all/swagger/SwaggerProperties.java b/src/main/java/com/spring4all/swagger/SwaggerProperties.java index 092b9f8..0c21e45 100644 --- a/src/main/java/com/spring4all/swagger/SwaggerProperties.java +++ b/src/main/java/com/spring4all/swagger/SwaggerProperties.java @@ -101,14 +101,14 @@ public static class GlobalOperationParameter { private String modelRef; /** - * 参数放在哪个地方:header,query,path,body.form + * 参数放在哪个地方:header,query,path,formData,cookie,form **/ private String parameterType; /** * 参数是否必须传 **/ - private String required; + private Boolean required; }