1.需要的Jar包依赖
io.springfox
springfox-swagger2
2.7.0
io.springfox
springfox-swagger-ui
2.7.0
org.springframework
spring-web
4.3.14.RELEASE
2.Swagger配置类import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
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;
//@Configuration
@WebAppConfiguration
@EnableSwagger2//重要!
@EnableWebMvc
@ComponentScan(basePackages = "com.xx.controller")//扫描control所在的package请修改为你control所在package
public class SwaggerConfig {
@Bean
public Docket api() {
//添加头部开始!这里是添加请求头信息,可以不加这段代码
ParameterBuilder ticketPar = new ParameterBuilder();
List pars = new ArrayList();
ticketPar.name("Authorization").description("token")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).build(); //header中的Authorization参数非必填,传空也可以
pars.add(ticketPar.build()); //根据每个方法名也知道当前方法在设置什么参数
//添加头部结束,这里是添加请求头信息,可以不加这段代码
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.build().globalOperationParameters(pars)
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("xx项目接口文档")
.description("xx项目接口测试")
.version("1.0.0")
.termsOfServiceUrl("")
.license("")
.licenseUrl("")
.build();
}
}
/*重要!如果你的项目引入junit测试,此处需要使用@WebAppConfiguration,如果没有使用junit使用@Configuration*/
在SpringMVC配置文件中引入你的Swagger配置
3.操作使用方法
在你的controller层的类上@Api(value="xx",description="xx")
在controller层具体的方法上加 @ApiOperation(value = "xx",httpMethod = "POST",notes = "随意填写",response = 你的类名.class)
操作示例:import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
/**
* @Author: www.itwps.com
* @Date: 2020/7/23 10:32
* @Email: 814565718@qq.com
*/
@Controller
@Api(value = "xx",description = "某某功能接口")
public class TestController {
@ApiOperation(value = "xx",httpMethod = "POST",notes = "随意填写",response = TestController.class)
@PostMapping("/")
public void M(){
}
}
如果不想某个方法或者某个controller类显示在接口文档里,在该方法或者该类上面添加注解:@ApiIgnore即可
添加好之后访问路径格式:http://ip:port/项目名/swagger-ui.html 示例:http://127.0.0.1:8080/TestXiangMu/swagger-ui.html
遇到的问题:
如果你的项目开了interceptor拦截器,则需要在SpringMVC中配置不拦截Swagger
注意:这里如果加了排除拦截,标题2中在SpringMVC中添加Swagger配置中的配置Swagger下的两行代码可以不加,加了也不会影响。