配置swagger可以实现自动生成文档,比较方便。
首先在pom.xml中添加swagger的依赖
<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>
一开始找不到依赖,需要在右键单击项目,点击Maven->Reimport即可解决。
配置WebAppConfiguration
@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport {
@Autowired
private JwtInterceptor jwtInterceptor;
protected void addInterceptors(InterceptorRegistry registry) {
//注册拦截器要声明拦截器对象和要拦截的请求
registry.addInterceptor(jwtInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/**/login/**")
.excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**");
}
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
配置SwaggerConfig
package com.sailing.springbootmybatis.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @author baibing
* @project: springboot-mybatis
* @package: com.sailing.springbootmybatis.config
* @Description: swagger2配置类
* @date 2018/9/25 15:35
*/
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.sailing.springbootmybatis.controller"))
.paths(Predicates.not(PathSelectors.regex(“/error.*”)))// 错误路径不监控
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("说明文档")
.description("描述")
.contact(new Contact("姓名","网址","邮箱")
.version("1.0")
.build();
}
}
配置完毕后,就可以添加说明信息了。
实体类
@ApiModel(value="AppInfo", description = "App信息实体类")
public class AppInfo {
@ApiModelProperty("App的id")
private Integer id;//主键id
接口类
@Api(value="用户controller",tags={"用户操作接口"})
@RestController
public class UserController {
@ApiOperation(value="获取用户信息",tags={"获取用户信息copy"},notes="注意问题点")
@GetMapping("/getUserInfo")
public User getUserInfo(@ApiParam(name="id",value="用户id",required=true) Long id,@ApiParam(name="username",value="用户名") String username) {
// userService可忽略,是业务逻辑
User user = userService.getUserInfo();
return user;
}
}
访问http://localhost:8080/swagger-ui.html报错404,显示/swagger-ui.html访问正常,而/webjars/**的网页都访问不到。
原来是在WebAppConfiguration中因为url映射到本地资源的时候少写了一个斜杠。。。
正常显示后,在自定义接口上还有basic-erroe-controller错误界面的接口,在SwaggerConfig中配置
.paths(Predicates.not(PathSelectors.regex(“/error.*”)))// 错误路径不监控
即可不显示错误页面。