mirror of https://github.com/elunez/eladmin
112 lines
3.5 KiB
Java
112 lines
3.5 KiB
Java
package me.zhengjie.config;
|
||
|
||
import com.fasterxml.classmate.TypeResolver;
|
||
import com.google.common.base.Predicates;
|
||
import io.swagger.annotations.ApiModel;
|
||
import io.swagger.annotations.ApiModelProperty;
|
||
import lombok.Data;
|
||
import org.springframework.beans.factory.annotation.Value;
|
||
import org.springframework.context.annotation.Bean;
|
||
import org.springframework.context.annotation.Configuration;
|
||
import org.springframework.core.Ordered;
|
||
import org.springframework.data.domain.Pageable;
|
||
import springfox.documentation.builders.ApiInfoBuilder;
|
||
import springfox.documentation.builders.ParameterBuilder;
|
||
import springfox.documentation.builders.PathSelectors;
|
||
import springfox.documentation.schema.AlternateTypeRule;
|
||
import springfox.documentation.schema.AlternateTypeRuleConvention;
|
||
import springfox.documentation.schema.ModelRef;
|
||
import springfox.documentation.service.ApiInfo;
|
||
import springfox.documentation.service.Parameter;
|
||
import springfox.documentation.spi.DocumentationType;
|
||
import springfox.documentation.spring.web.plugins.Docket;
|
||
import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
import static com.google.common.collect.Lists.newArrayList;
|
||
import static springfox.documentation.schema.AlternateTypeRules.newRule;
|
||
|
||
/**
|
||
* api页面 /swagger-ui.html
|
||
* @author Zheng Jie
|
||
* @date 2018-11-23
|
||
*/
|
||
|
||
@Configuration
|
||
@EnableSwagger2
|
||
public class SwaggerConfig {
|
||
|
||
@Value("${jwt.header}")
|
||
private String tokenHeader;
|
||
|
||
@Value("${jwt.token-start-with}")
|
||
private String tokenStartWith;
|
||
|
||
@Value("${swagger.enabled}")
|
||
private Boolean enabled;
|
||
|
||
@Bean
|
||
@SuppressWarnings("all")
|
||
public Docket createRestApi() {
|
||
ParameterBuilder ticketPar = new ParameterBuilder();
|
||
List<Parameter> pars = new ArrayList<>();
|
||
ticketPar.name(tokenHeader).description("token")
|
||
.modelRef(new ModelRef("string"))
|
||
.parameterType("header")
|
||
.defaultValue(tokenStartWith + " ")
|
||
.required(true)
|
||
.build();
|
||
pars.add(ticketPar.build());
|
||
return new Docket(DocumentationType.SWAGGER_2)
|
||
.enable(enabled)
|
||
.apiInfo(apiInfo())
|
||
.select()
|
||
.paths(Predicates.not(PathSelectors.regex("/error.*")))
|
||
.build()
|
||
.globalOperationParameters(pars);
|
||
}
|
||
|
||
private ApiInfo apiInfo() {
|
||
return new ApiInfoBuilder()
|
||
.title("eladmin 接口文档")
|
||
.version("2.3")
|
||
.build();
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 将Pageable转换展示在swagger中
|
||
*/
|
||
@Configuration
|
||
class SwaggerDataConfig {
|
||
|
||
@Bean
|
||
public AlternateTypeRuleConvention pageableConvention(final TypeResolver resolver) {
|
||
return new AlternateTypeRuleConvention() {
|
||
@Override
|
||
public int getOrder() {
|
||
return Ordered.HIGHEST_PRECEDENCE;
|
||
}
|
||
|
||
@Override
|
||
public List<AlternateTypeRule> rules() {
|
||
return newArrayList(newRule(resolver.resolve(Pageable.class), resolver.resolve(Page.class)));
|
||
}
|
||
};
|
||
}
|
||
|
||
@ApiModel
|
||
@Data
|
||
private static class Page {
|
||
@ApiModelProperty("页码 (0..N)")
|
||
private Integer page;
|
||
|
||
@ApiModelProperty("每页显示的数目")
|
||
private Integer size;
|
||
|
||
@ApiModelProperty("以下列格式排序标准:property[,asc | desc]。 默认排序顺序为升序。 支持多种排序条件:如:id,asc")
|
||
private List<String> sort;
|
||
}
|
||
}
|