SpringCloud搭建专题【网关统一管理swagger】

所有的业务服务正常配置swagger即可,不需要引入swagger-ui,统一在gateway上配置。

从这开始就是gateway的配置,其余的eurekaclient和正常的单机项目一样配置即可

首先在已经创建好的gateway微服务中引入swagger jar包

        <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>

声明gateway中不需要配置下面这些,否则就会疯狂报错

@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket docket(){return  new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(true).select().apis(RequestHandlerSelectors.basePackage("com.basecloud.auth.controller")).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder()//页面标题.title("Auth Restful Api")//创建人.contact(new Contact("yujian", "http://www.basecloud.com/", ""))//版本号.version("1.0")//描述.description("API 描述").build();}
}
但是swagger默认回去请求一些接口,没有配置上面的代码就需要手动去写一下接口@RestController
@RequestMapping("/swagger-resources")
public class SwaggerResourceController {@Autowiredprivate SwaggerResourcesConfig swaggerResources;@Autowired(required = false)private SecurityConfiguration securityConfiguration;@Autowired(required = false)private UiConfiguration uiConfiguration;@GetMapping("/configuration/security")public Mono<ResponseEntity<SecurityConfiguration>> securityConfiguration() {return Mono.just(new ResponseEntity<>(Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), HttpStatus.OK));}@GetMapping("/configuration/ui")public Mono<ResponseEntity<UiConfiguration>> uiConfiguration() {return Mono.just(new ResponseEntity<>(Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK));}@GetMapping("")public Mono<ResponseEntity> swaggerResources() {return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK)));}
}

先拿配置文件来讲,根据路径名称转发,让网关转发到
http://localhost:8099/auth/v2/api-docs的路径上去,就会请求到注册为BASECLOUD-AUTH的服务(localhost:8091/v2/api-docs)拿到json

网关转发的地址:

实际swagger的地址(auth服务)

ok看到这里大概就能明白是如何统一管理swagger的了,我这里还单独配置了转发路径

swagger:names: auth,shop

然后配置swaggerResource的集合,下面是配置类

@Component
@Primary
public class SwaggerResourcesConfig implements SwaggerResourcesProvider{@Value("${swagger.names}")private String[] apiNames;@Overridepublic List<SwaggerResource> get() {List<SwaggerResource> collect = Arrays.asList(apiNames).stream().map(name -> {SwaggerResource swaggerResource = swaggerResource(name,  "/"+name+"/v2/api-docs");return swaggerResource;}).collect(Collectors.toList());return collect;}private SwaggerResource swaggerResource(String serviceId, String location){SwaggerResource swaggerResource = new SwaggerResource();swaggerResource.setName(serviceId);swaggerResource.setLocation(location);swaggerResource.setSwaggerVersion("2.0");return swaggerResource;}
}

到这就皆大欢喜,踩了一下午的坑,各种bug…,希望不会再有人踩坑了,如果帮到了你点个赞谢谢啦!

SpringCloud搭建专题【gateway统一管理swaggerApi】相关推荐

  1. 【解决方案】医院医疗安防视频监控系统搭建及集成统一管理方案介绍

    一.背景介绍 近年来一些不法分子把罪恶的手伸到了医院,严重危害了医院和病人的生命财产安全,他们实行扒.窃.抢.破坏等卑劣手段扰乱医院工作秩序.窃取他人钱财.破坏社会治安.为了我们的健康,为了社会的安宁 ...

  2. 搭建Vcenter 实现统一管理 esxi

    vCenter server 配置IP地址.dns 加入域 新建实例用于存放v center 数据 所有服务都启动,调整自动启动,登录方式选择本账户,填域管理员.Report server除外. 查看 ...

  3. SpringCloud + kafka + ELK 搭建微服务日志管理平台

    SpringCloud + kafka + ELK 搭建微服务日志管理平台 2019-12-31,写在前面的话 今天是2019最后一天了,最近几天都在搞这块微服务日志管理的事情,有很多种方案实现,每种 ...

  4. springcloud搭建elk日志管理

    对于java项目查看日志方法很多,由于项目需要,查看日志需要命令查看,为方便后端开发人员查看错误日志,项目要求搭建elk日志管理 此次是springcloud搭建elk,spirngboot亦可如此 ...

  5. SpringCloud→SpringCloud搭建Zuul动态服务网关(五)

    文章目录 SpringCloud搭建Zuul动态服务网关 网关分类 开放Api 微服务网关 API服务管理平台 网关设计 开放API接口 内网API接口 网关框架 使用Zuul实现反向代理 使用Zuu ...

  6. 如何使用 SpringCloud 搭建服务注册中心?

    作者 | 于海东 责编 | 郭   芮 之前在巧玩SpringBoot--SpringBoot的第一个"Hello World!"(https://blog.csdn.net/do ...

  7. SpringCloud 搭建服务注册中心

    SpringCloud 搭建服务注册中心 原创 作者 | 于海东 之前在巧玩SpringBoot--SpringBoot的第一个"Hello World!"(https://blo ...

  8. 【springCloud搭建】一、创建springCloud项目

    记录一下近两年接触的微服务框架的知识,一是为了日后需要搭建框架时方便查阅,二是与大家分享下我所了解的知识,如有不对的或描述未清楚的地方欢迎大家在评论区进行留言 接下来我会教大家如何搭建一个微服务框架和 ...

  9. 【SpringCloud系列】Gateway网关简介及使用

    一.Gateway是什么 Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用Zuul网关:但在2.x版本中,zuul的升级就是一直跳票,SpringCloud最后自己研发了一个网关代替 ...

最新文章

  1. 一道有关动态规划(Dynamic Programming)的网易面试题
  2. oracle 体系结构认识,Oracle体系结构总体认识
  3. 如何配置charles_抓包工具--charles(青花瓷)及获取AppStore数据包
  4. bzoj 2962 序列操作 线段树
  5. System.Convert 的一些事
  6. python数据格式化后导入数据库_MySQL导入格式化数据
  7. android webview 透明背景,在android中的半透明webview背景
  8. java csv 换行_javacsv如何换行输入
  9. Spring框架学习——AOP
  10. Linux命令行使用bypy上传文件到百度网盘
  11. SXSSFWorkbook操作Excel表格
  12. [IOS]从零开始搭建基于Xcode7的IOS开发环境和免开发者帐号真机调试运行第一个IOS程序HelloWorld
  13. android studio重装后直接,【原创】重装Windows系统后Android studio无需重装,直接迁移...
  14. 使用python turtle库13行代码实现奥运五环
  15. 三博脑科医院:癫痫的治疗像是一场“对抗赛”
  16. 为什么ES不适合做数据存储
  17. 何海涛算法面试题感悟之九:寻找链…
  18. ChatGPT的各种骚操作
  19. 【论文学习笔记-10】ActiveStereoNet(Google ECCV2018)主动式双目相机自监督学习立体匹配网络
  20. 信捷口罩机程序,带注释,信捷触摸屏信捷PLC.

热门文章

  1. 霏凡集成版Sql2k sp4下载
  2. 2020最新阿里云计算ACP考试笔记
  3. 麻省理工学院计算机专业怎么样,麻省理工大学的计算机专业怎么样?
  4. react hooks 记录监听滚动条事件踩得坑
  5. 手机电池越用越不耐用的原因
  6. python绘图时如何让点在线上
  7. php mysql问答系统_PHP+MYSQL问答系统V3.7
  8. 手机怎么解压php文件夹,手机怎么解压文件
  9. SQL学习笔记——task06:SQL综合练习
  10. android 开发打赏布局,Android自定义View模仿虎扑直播界面的打赏按钮功能