依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
配置:
@EnableSwagger2
@Configuration
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
Predicate<RequestHandler> predicate = new Predicate<RequestHandler>() {
@Override
public boolean apply(RequestHandler input) {
Class<?> declaringClass = input.declaringClass();
if (declaringClass == BasicErrorController.class) {
return false;
}
if (declaringClass.isAnnotationPresent(RestController.class)) {
return true;
}
if (input.isAnnotatedWith(ResponseBody.class)) {
return true;
}
return false;
}
};
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.useDefaultResponseMessages(false)
.select()
.apis(predicate)
.build()
.globalOperationParameters(setHeaderToken())
.globalOperationParameters(setVersion())
;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("测试服务")
.description("测试服务API")
// 版本
.version("v1")
.build();
}
/**
* 设置传送参数-传token(如果设置在header传别的参数,只需加下面方法,并修改:parameterType,最后在上面Docket后面追加即可)
*
* @return
*/
private List<Parameter> setHeaderToken() {
ParameterBuilder tokenPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<>();
tokenPar.name("authorization").description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
pars.add(tokenPar.build());
return pars;
}
/**
* 设置传送参数-传api version
*
* @return
*/
private List<Parameter> setVersion() {
ParameterBuilder apiVersion = new ParameterBuilder();
List<Parameter> parameters = new ArrayList<>();
apiVersion.name("version")
.description("接口版本")
.modelRef(new ModelRef("string"))
.parameterType("path")
.required(true)
.build();
parameters.add(apiVersion.build());
return parameters;
}
}