最近弄swwager文档,被搞得恼火,故记录一下
先展示一下现有的页面,此页面由swwager自动生成
配置步骤:
一:导入swwager的依赖
<!-- ===================Swagger2 Begin=================== --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> <exclusions> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> </exclusion> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.4</version> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> <version>1.5.21</version> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> <version>1.5.21</version> </dependency>
<!-- ===================Swagger2 End=================== -->
|
第二步:编写配置文件
package com.yxkj.web.webpaypre.config;
import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Predicate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.RequestHandler; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; 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;
/** * Swagger2 UI配置 * <pre> * 通过访问http://{yourip}:8090/api/swagger-ui.html查看发布的REST接口; * </pre> */ @Configuration @EnableSwagger2 //@Profile({"dev", "test"}) public class SwaggerConfig { // 定义分隔符 private static final String SEPARATOR = ",";
/** * 设置全局参数 * @return */ private List<Parameter> getGlobalOperationParameters() { List<Parameter> pars = new ArrayList<>(); // ParameterBuilder parameterBuilder = new ParameterBuilder(); // parameterBuilder.name("token").description("token").modelRef(new ModelRef("string")).parameterType("header").required(true); // pars.add(parameterBuilder.build()); // parameterBuilder.name("sign").description("数据签名").modelRef(new ModelRef("string")).parameterType("header").required(true); // pars.add(parameterBuilder.build()); return pars; }
/** * Swagger2创建Docket的Bean * @return Docket */ @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .globalOperationParameters(getGlobalOperationParameters()) .apiInfo(apiInfo()) .select() .apis(basePackage("com.yxkj.web.webpaypre.controller" )) .paths(PathSelectors.any()) .build(); }
/** * Swagger2创建该Api的基本信息 * * @return ApiInfo */ @Bean public ApiInfo apiInfo() { return new ApiInfoBuilder().title("西藏医典科技健康管理有限公司") .termsOfServiceUrl("https://springfox.github.io/springfox/docs/current/").version("1.0").build(); }
/** * @param basePackage * @return * @see RequestHandlerSelectors#basePackage(String) */ public static Predicate<RequestHandler> basePackage(final String basePackage) { return input -> { return declaringClass(input).transform(handlerPackage(basePackage)).or(true); }; }
private static Function<Class<?>, Boolean> handlerPackage(final String basePackage) { return input -> { // 循环判断匹配 for (String strPackage : basePackage.split(SEPARATOR)) { boolean isMatch = input.getPackage().getName().startsWith(strPackage); if (isMatch) { return true; } } return false; }; }
private static Optional<? extends Class<?>> declaringClass(RequestHandler input) { return Optional.fromNullable(input.declaringClass()); }
}
|
第三步:在浏览器中输入访问地址:http://IP:8082/项目的访问路径/doc.html