一,什么是Swagger
可以理解为,为你的项目增加一个api文档,这个api文档可以是自动生成的可以看到你的所有api接口,还可以调这些api接口
二,需要那些架包
三,需要一个swagger的配置类
@Configuration
@EnableSwagger2
再swagger类里面需要添加这两个注解,
/**
* 这是Swagger2的配置文件,必须需要此文件
* Swagger与工程结合需要引入依赖,已在pom.xml中表明,一共2个依赖
* <p>
* swagger2文档的默认地址是 .../swagger-ui.html
* <p>
* https://swagger.io/
*
* @author hechanglong
*/
@Configuration
@EnableSwagger2
public class Swagger2 {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 指定controller存放的目录路径
.apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 文档标题
.title("SpringBoot Base Demo")
// 文档描述
.description("Swagger2和SpringBoot相结合")
.termsOfServiceUrl("")
.version("v1")
.build();
}
四,再controller的上面使用api注解,标明controller的名称
@Api(value="驾校管理", tags = "驾校模块")
五,swagger一些注解的意思
Swagger使用的注解及其说明:
@Api:用在类上,说明该类的作用。
@ApiOperation:注解来给API增加方法说明。
@ApiImplicitParams : 用在方法上包含一组参数说明。
@ApiImplicitParam:用来注解来给方法入参增加说明。
@ApiResponses:用于表示一组响应
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
l code:数字,例如400
l message:信息,例如"请求参数没填好"
l response:抛出异常的类
@ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
l @ApiModelProperty:描述一个model的属性
然后启动springboot,访问http://localhost:8080/swagger-ui.html
六,如果访问报错,显示该swagger-ui.html,由dispatcherServlet找不到改html
No mapping found for HTTP request with URI [/swagger-ui.html] in DispatcherServlet with name 'dispatcherServlet'
这个时候你肯定有个类extends了WebMvcConfigurerAdapter这个类,swagger里面有个WebMvcConfigurerAdapter的bean,springboot里面也有一个,所以就覆盖了,需要加上一段代码就能实现了
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
/**
* @Description 静态资源路径
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
}