SpringBoot整合Swagger2和全局参数配置
导入两个包
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
配置
Docket
package com.example.demo.config;
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.ApiKey;
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;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.pathMapping("/")
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
.paths(PathSelectors.any())
.build()
//接口信息
.apiInfo(apiInfo())
//全局参数
.globalOperationParameters(getGlobalOperationParameters())
//全站统一参数token
.securitySchemes(authToken())
;
}
//接口信息配置
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("秋名山见")
.description("秋名山见,详细信息......")
.version("9.0")
.license("The Apache License")
.licenseUrl("http://www.baidu.com")
.build();
}
//全局参数配置
private List<Parameter> getGlobalOperationParameters() {
List<Parameter> pars = new ArrayList<>();
ParameterBuilder parameterBuilder = new ParameterBuilder();
// header query cookie
parameterBuilder.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false);
pars.add(parameterBuilder.build());
parameterBuilder.name("userId").description("用户id").modelRef(new ModelRef("int")).parameterType("query").required(false);
pars.add(parameterBuilder.build());
parameterBuilder.name("name").description("用户名").modelRef(new ModelRef("string")).parameterType("cookie").required(false);
pars.add(parameterBuilder.build());
return pars;
}
//全站统一参数配置,一般是token。
private List<ApiKey> authToken() {
List<ApiKey> arrayList = new ArrayList();
arrayList.add(new ApiKey("token", "token", "header"));
return arrayList;
}
}
启动类要加上EnableSwagger2注解
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@EnableSwagger2
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
配置效果
全局参数配置效果
全局统一token配置效果
使用示例
代码
package com.example.demo.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@Api(tags = "计算接口")
public class CaculatorController {
@GetMapping("/div")
@ResponseBody
@ApiOperation("除法")
@ApiImplicitParams({
@ApiImplicitParam(name = "x", value = "参数x", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "y", value = "参数y", dataType = "int", paramType = "query"),
})
public int div(int x,int y ){
return x/y;
}
}