您的位置:首页 > 编程语言 > Java开发

基于Spring Boot, Spring Security 整合Swagger UI实现在线API文档

2020-03-26 08:38 531 查看

一、添加依赖

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>

二、创建SwaggerWebMvcConfig.java

@Configuration
public class SwaggerWebMvcConfig extends WebMvcConfigurerAdapter {

@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/");
}
}

三、创建SwaggerConfig

@Configuration
@EnableWebMvc
@EnableSwagger2
public class SwaggerConfig implements WebMvcConfigurer {

/**
* 指定接口基础信息
*      apiInfo:定义项目描述信息
*      apis:   指定接口层中的位置
*
* @return Docket
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("业务接口")
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.yc.practice.mall"))
.paths(PathSelectors.any())
.build();
}

/**
* 指定接口基础信息
*      apiInfo:定义项目描述信息
*      apis:   指定接口层中的位置
*
*  [将多个controller拼装到一个分组
*    .apis(Predicates.or(selector1,selector2))   ]
*  [只监控user相关接口
*    .paths(PathSelectors.regex("/user.*"))  ]
*  [为有@Api注解的Controller生成API文档
*   .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))   ]
*  [为有@ApiOperation注解的方法生成API文档
*    .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))  ]
*
* @return Docket
*/
@Bean
public Docket createSystemRestApi() {
//分组展示
Predicate<RequestHandler> selector1 = RequestHandlerSelectors.basePackage("com.yc.practice.system.controller");
// Predicate<RequestHandler> selector2 = RequestHandlerSelectors.basePackage("com.lh.modules");
return new Docket(DocumentationType.SWAGGER_2)
.groupName("系统接口")
.apiInfo(apiInfo())
.select()
.apis(Predicates.or(selector1))
.paths(PathSelectors.any())
.build();
}

/**
* 定义项目描述信息
* @return 定义项目描述信息
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("接口文档")
.description("Restful风格接口文档")
.version("1.0")
.build();
}

}

四、security配置类中过滤swagger相关信息

@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers( "/swagger-ui.html")
.antMatchers("/webjars/**")
.antMatchers("/v2/**")
.antMatchers("/swagger-resources/**");
}

五、访问http://ip:port/ swagger-ui.html即可

  • 点赞
  • 收藏
  • 分享
  • 文章举报
紫色年华 && xieyc 发布了4 篇原创文章 · 获赞 2 · 访问量 94 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐