springboot整合swagger步骤如下
#引入基础jar包
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
添加swagger配置文件,并在项目中启用swagger
//java项目 www.fhadmin.org
@Configuration
@EnableSwagger2
@Profile("dev")
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build()
.enable(!Util.runEvn.equals(AppServer.Type.prod.name()));
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("xxxxx项目 RESTful APIs")
.description("xxxxx项目后台api接口文档")
.version("1.0")
.build();
}
}
配置js,css等前端文件路径问题,如果项目中使用权限拦截,一并对swagger放行
//java项目 www.fhadmin.org
@Configuration
public class AppMvcConfigurer extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/js/");
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
// 增加拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
super.addInterceptors(registry);
registry.addInterceptor(new RequestHandlerInterceptor()).addPathPatterns("/**");
registry.addInterceptor(tokenAndPermissionAndDrInterceptor).addPathPatterns("/**/*")
.excludePathPatterns("/swagger-ui.html", "/swagger-resources/**", "/v2/**", "/error/**" //);添加swagger exclude;
registry.addInterceptor(headerInterceptor).addPathPatterns("/**");
}
}
注意在controller类中添加swagger相关注解,如果扫描不到一样无法正常使用的。例如
//java项目 www.fhadmin.org
@Api(value = "TestController", description = "用户登录登出接口")
@RestController
@Slf4j
@RequestMapping(value = "/api/test")
public class TestController {
@Resource
private UserLoginService userLoginService;
@ApiOperation(value="用户登录", notes="用户登录接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "email", value = "邮箱", required = true ,dataType = "string"),
@ApiImplicitParam(name = "password", value = "密码", required = true ,dataType = "string")
})
@RequestMapping (value = "/login",method = RequestMethod.GET)
@ResponseBody
public JsonData userLogin(@RequestParam String email,@RequestParam String password){
UserParam user = new UserParam();
user.setEmail(email);
user.setPassword(password);
log.info("login parameter:{}", JsonUtil.toJson(user));
JsonData jsonData = null;
try {
BeanValidatorUtil.validateParam(user);
jsonData = userLoginService.login(user);
} catch (ParamException e) {
return JsonData.error(e.getMessage());
} catch (Exception e) {
log.error("login failure,error:", e);
return JsonData.error("登录异常,请联系管理员查看。");
}
log.info("login ret:{}", JsonUtil.toJson(jsonData));
return jsonData;
}