微服务-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    端口写你自己得

 
posted @ 2022-03-09 10:46  郎小乐  阅读(248)  评论(0)    收藏  举报