SpringCloud搭建专题【gateway统一管理swaggerApi】
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】相关推荐
- 【解决方案】医院医疗安防视频监控系统搭建及集成统一管理方案介绍
一.背景介绍 近年来一些不法分子把罪恶的手伸到了医院,严重危害了医院和病人的生命财产安全,他们实行扒.窃.抢.破坏等卑劣手段扰乱医院工作秩序.窃取他人钱财.破坏社会治安.为了我们的健康,为了社会的安宁 ...
- 搭建Vcenter 实现统一管理 esxi
vCenter server 配置IP地址.dns 加入域 新建实例用于存放v center 数据 所有服务都启动,调整自动启动,登录方式选择本账户,填域管理员.Report server除外. 查看 ...
- SpringCloud + kafka + ELK 搭建微服务日志管理平台
SpringCloud + kafka + ELK 搭建微服务日志管理平台 2019-12-31,写在前面的话 今天是2019最后一天了,最近几天都在搞这块微服务日志管理的事情,有很多种方案实现,每种 ...
- springcloud搭建elk日志管理
对于java项目查看日志方法很多,由于项目需要,查看日志需要命令查看,为方便后端开发人员查看错误日志,项目要求搭建elk日志管理 此次是springcloud搭建elk,spirngboot亦可如此 ...
- SpringCloud→SpringCloud搭建Zuul动态服务网关(五)
文章目录 SpringCloud搭建Zuul动态服务网关 网关分类 开放Api 微服务网关 API服务管理平台 网关设计 开放API接口 内网API接口 网关框架 使用Zuul实现反向代理 使用Zuu ...
- 如何使用 SpringCloud 搭建服务注册中心?
作者 | 于海东 责编 | 郭 芮 之前在巧玩SpringBoot--SpringBoot的第一个"Hello World!"(https://blog.csdn.net/do ...
- SpringCloud 搭建服务注册中心
SpringCloud 搭建服务注册中心 原创 作者 | 于海东 之前在巧玩SpringBoot--SpringBoot的第一个"Hello World!"(https://blo ...
- 【springCloud搭建】一、创建springCloud项目
记录一下近两年接触的微服务框架的知识,一是为了日后需要搭建框架时方便查阅,二是与大家分享下我所了解的知识,如有不对的或描述未清楚的地方欢迎大家在评论区进行留言 接下来我会教大家如何搭建一个微服务框架和 ...
- 【SpringCloud系列】Gateway网关简介及使用
一.Gateway是什么 Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用Zuul网关:但在2.x版本中,zuul的升级就是一直跳票,SpringCloud最后自己研发了一个网关代替 ...
最新文章
- 一道有关动态规划(Dynamic Programming)的网易面试题
- oracle 体系结构认识,Oracle体系结构总体认识
- 如何配置charles_抓包工具--charles(青花瓷)及获取AppStore数据包
- bzoj 2962 序列操作 线段树
- System.Convert 的一些事
- python数据格式化后导入数据库_MySQL导入格式化数据
- android webview 透明背景,在android中的半透明webview背景
- java csv 换行_javacsv如何换行输入
- Spring框架学习——AOP
- Linux命令行使用bypy上传文件到百度网盘
- SXSSFWorkbook操作Excel表格
- [IOS]从零开始搭建基于Xcode7的IOS开发环境和免开发者帐号真机调试运行第一个IOS程序HelloWorld
- android studio重装后直接,【原创】重装Windows系统后Android studio无需重装,直接迁移...
- 使用python turtle库13行代码实现奥运五环
- 三博脑科医院:癫痫的治疗像是一场“对抗赛”
- 为什么ES不适合做数据存储
- 何海涛算法面试题感悟之九:寻找链…
- ChatGPT的各种骚操作
- 【论文学习笔记-10】ActiveStereoNet(Google ECCV2018)主动式双目相机自监督学习立体匹配网络
- 信捷口罩机程序,带注释,信捷触摸屏信捷PLC.