前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud中多个子模块如何集成Swagger文档

SpringCloud中多个子模块如何集成Swagger文档

作者头像
一个程序员的成长
发布2020-11-25 15:18:59
4.3K1
发布2020-11-25 15:18:59
举报
文章被收录于专栏:bingfeng-技术bingfeng-技术

不知道大家工作中有没有使用Swagger,可能没有用过,但是肯定或多或少的接触过、听说过,它是一款基于Restfull接口的文档在线生成 + 功能测试的工具。

网上有很多SpringBoot如何集成Swagger的教程,但是对于微服务而言,多个模块之前应该如何使用Swagger呢?总不能每个模块单独集成一个,

那么当有很多个模块的时候,是不是相应的也就产生了很多的地址,这样对我们来说确实不是一件非常友好的事情,那么有没有办法解决呢?

答案肯定是有的,那么我们直接进入主题,说说SpringCloud是如何集成Swagger的。

项目结构

这是我们的项目结构,分别是订单模块,会员模块,注册中心,网关

其实我们就是通过网关去整合Swagger来管理微服务所有的API的。那么如何来实现呢?

分别在订单模块和会员模块中引入swagger的maven坐标,用过Swagger的朋友可能之前使用的是另外的两个maven坐标,其实SpringBoot内部已经帮我们封装了Swagger,跟另外的两个坐标的作用其实是一样的,所以我们只需要引入这个坐标即可。

代码语言:javascript
复制
<!-- swagger-spring-boot -->
<dependency>
  <groupId>com.spring4all</groupId>
  <artifactId>swagger-spring-boot-starter</artifactId>
  <version>1.7.0.RELEASE</version>
</dependency>

接下来就是在订单模块和会员模块的启动类上加上开启Swagger的注解,让Swagger生效,如下图

在订单模块和会员模块的application.yml中配置接口的扫描范围

到这里我们订单模块和会员模块算是配置完了,最后我们来定义两个简单的接口进行测试,本文并没有讲述Swagger注解的使用,关于这部分内容,大家可以参考这篇文章

https://blog.csdn.net/u014231523/article/details/76522486

接下来就是重点了,配置网关,首先引入swagger的maven坐标,同样在启动类上开启Swagger,并且开启路由服务

首先我们先配置一下application.yml,通过访问网关将服务路由到具体的业务模块中去,shopping-member其实就是会员模块中配置文件配置的唯一标识,后面的/member/**,就是我们访问127.0.0.1:9000/member/

就是将服务路由到我们的会员模块,后面在拼接具体的路径就可以访问到我们的接口了

最后我们再写一个配置类,代码中的/member/v2/api-docs中的member其实就是我们上图中配置的member,至于前面的参数就是一个模块的名字,可以随意起没有什么规则

代码语言:javascript
复制
@Component
@Primary
public class SwaggerConfig implements SwaggerResourcesProvider {

    @Override
    public List<SwaggerResource> get() {

        List resources = new ArrayList<>();

        /**
         * shopping-member --->  这个就是个模块的名字,可以随便起
         * /member/v2/api-docs ---> member就是application.yml配置的路由路径,后面的/v2/api-docs固定写法
         */
        resources.add(swaggerResource("shopping-member", "/member/v2/api-docs", "2.0"));
        resources.add(swaggerResource("shopping-order", "/order/v2/api-docs", "2.0"));

        return resources;
    }

    private Object swaggerResource(String name, String location, String version) {

        SwaggerResource swaggerResource = new SwaggerResource();
        swaggerResource.setName(name);
        swaggerResource.setLocation(location);
        swaggerResource.setSwaggerVersion(version);
        return swaggerResource;
    }
}

到这里我们SpringCloud多模块集成Swagger就算完成了,最后我们来启动下,看下效果。

访问地址:(http://localhost:9000/swagger-ui.html

那么这样我们就可以将我们的多个模块全部集成到这里了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个程序员的成长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档