微服务-15 分布式协作 RESTful API 快速集成Swagger文档
分布式协作 RESTful API 快速集成SWagger文档
快速集成swagger2文档
这种东西没什么好讲得,就是Swagger自己反射映射出一个文档,你使用人家给你提供得注解,在你得controller上使用,并且提供包路径,他就能映射到,这种东西还很简单 没啥可讲得 就快速集成了,,你要考虑得是这东西没必要运用生产,浪费处理性能和资源 ,所以上了生产就把这个关掉就行了,就一个配置文件属性 true或者false得事
第一步
引入pom
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<!-- json -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.77</version>
</dependency>
第二步
编写启动加载配置类

import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
//swagger2的配置文件,在项目的启动类的同级文件建立
@Configuration
@EnableSwagger2
//是否开启swagger,正式环境一般是需要关闭的(避免不必要的漏洞暴露!),可根据springboot的多环境配置进行设置
@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")
public class Swagger2 {
// swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 为当前包路径
.apis(RequestHandlerSelectors.basePackage("com.nacos.controller")).paths(PathSelectors.any())
.build();
}
// 构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 页面标题
.title("极客分享 RESTful API")
// 创建人信息
.contact(new Contact("极客分享", "https://www.lonelylang.com", "1419052183@qq.com"))
// 版本号
.version("1.0")
// 描述
.description("API 描述")
.build();
}
}
controller 应该如何描述

@RestController
@Api(tags = "缓存接口", description = "缓存接口 Rest API")
public class RedisTestController {
@Resource
RedisUtil redisUtil;
@ApiOperation("查询")
@RequestMapping("getTestRedis")
public Object get(String value){
redisUtil.set("name",value);
return redisUtil.get("name");
}
}
第三步 配置文件开启 swagger

#开启swagger
swagger.enable=true

第四步 看效果 访问 http://127.0.0.1:8081/swagger-ui.html 端口写你自己得

第五步 如果你已经集成了SpringSecurity框架,那么默认这些后台扫描都会被拦截。所以需要你自己在SpringSecurity 总配置类 放开

copy代码
@Override
protected void configure(HttpSecurity http) throws Exception {
// 前后端分离 项目 关闭csrf
http.csrf().disable()
//前后端分离 不通过SessionSecurity获取SecurityContext
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().authorizeRequests()
//放开登录接口 未登录也可以访问
.antMatchers("/getTestRedis").permitAll() //静态资源放行
.antMatchers("/login").anonymous()
.antMatchers("/v2/api-docs", "/configuration/ui", "/swagger-resources", "/configuration/security",
"/swagger-ui.html", "/webjars/**","/swagger-resources/configuration/ui","/swagger-ui.html").permitAll()
.anyRequest().authenticated();//除了上面得请求 全部需要权限验证
//我想给 token 验证得过滤器 在 登录 用户密码过滤器之前执行
http.addFilterBefore(jwtAuthenticationTokenFilter,UsernamePasswordAuthenticationFilter.class);
//配置异常处理器 认证异常处理器 内置得权限不足处理器
http.exceptionHandling().authenticationEntryPoint(authenticationEntryPoint).accessDeniedHandler(accessDeniedHandler);
//放行swagger
}
第四步 看效果 访问 http://127.0.0.1:8080/swagger-ui.html 端口写你自己得


浙公网安备 33010602011771号