package com.peony.electric.server.config; import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI; import com.peony.common.entity.po.TaskPO; import com.peony.common.enums.TaskStatus; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; 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; /** * @author 杜雲山 * @date 2019/10/26 */ @Configuration @EnableSwagger2 @EnableSwaggerBootstrapUI public class Swagger2Config { @Bean public Docket createRestApi() { boolean show=false;//開關配置,可以配置到配置文件 //只有本地啓動纔有接口文檔 String os = System.getProperties().getProperty("os.name"); if(os.contains("Windows")){show=true;} return new Docket(DocumentationType.SWAGGER_2).enable(show) .directModelSubstitute(TaskPO.class, String.class) .directModelSubstitute(TaskStatus.class, String.class) .apiInfo(apiInfo()) .host("localhost") .globalOperationParameters(parameters()) .select() //Swagger UI默認顯示所有接口 .apis(RequestHandlerSelectors.basePackage("com.peony.electric.server")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() // 設置頁面標題 .title("api接口文檔") // 設置聯繫人 .contact(new Contact("暫無name", "暫無url", "暫無email")) // 描述 .description("歡迎訪問接口文檔,這裏是描述信息") // 定義版本號 .version("1.0") .build(); } /** * 全局參數 * * @return List<Parameter> */ private List<Parameter> parameters() { List<Parameter> params = new ArrayList<>(); params.add(new ParameterBuilder() .name("token") .description("認證令牌,登錄外其他接口必填") .modelRef(new ModelRef("string")) .parameterType("header") .required(false) .build()); params.add(new ParameterBuilder() .name("imei") .description("APP端需傳入設備的imei") .modelRef(new ModelRef("string")) .parameterType("header") .required(false) .build()); return params; } }