Spring Cloud Zuul网关在分布式系统中集成Swagger文档展示方法

更新:11-14 名人轶事 我要投稿 纠错 投诉

如果你的系统也使用zuul作为分布式系统的网关,并使用swagger生成文档,并且希望将整个系统的文档集成在同一页面上,可以参考这篇文章。

项目结构

eureka-server:eureka服务注册中心,端口8080,

zuul-server:zuul网关,端口8081

payment-server:支付系统,端口8082

order-server:订单系统,端口8083

order-server1:订单系统,端口8084

order-server2:订单系统,端口8085

其中order-server、order-server1、order-server2组成订单系统集群。

项目结构

下面是运行后的效果图:

打开zuul的swagger主页http://localhost:8081/swagger-ui.html

渲染

实现方法

zuul-server

路由配置

zuul:

路线:

支付服务器:

路径: /支付/**

订单服务器:

path: /order/**swagger配置类SwaggerConfig

@配置

@EnableSwagger2

公共类SwaggerConfig {

@豆

公共Docket createRestApi() {

返回新的Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo());

}

私有ApiInfo apiInfo() {

返回新的ApiInfoBuilder()

.title("分布式购物系统")

.description("购物系统接口文档说明")

.termsOfServiceUrl("http://localhost:8081")

.contact(新联系人("vker", "", "6492178@gmail.com"))

.版本("1.0")

。建造();

}

@豆

UiConfiguration uiConfig() {

返回新的UiConfiguration(null, "list", "alpha", "schema",

UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS,假,真,60000L);

}

}重点:swagger文档资源配置类DocumentationConfig

@成分

@基本的

公共类DocumentationConfig 实现SwaggerResourcesProvider {

@覆盖

公共列表获取(){

列表资源=new ArrayList();

resources.add(swaggerResource("订单系统", "/order/v2/api-docs", "2.0"));

resources.add(swaggerResource("支付系统", "/pay/v2/api-docs", "2.0"));

返回资源;

}

私人SwaggerResource swaggerResource(字符串名称,字符串位置,字符串版本){

SwaggerResource swaggerResource=new SwaggerResource();

swaggerResource.setName(名称);

swaggerResource.setLocation(位置);

swaggerResource.setSwaggerVersion(版本);

返回swaggerResource;

}

可以看出,实现的重点在DocumentationConfig中。通过配置文档资源,当首页下拉框中选择订单系统时,会请求http://localhost:8081/order/v2/api-docs 获取文档详细信息。根据zuul的路由配置,zuul的/order/**请求会被路由到serviceId为order-server的系统上。而且由于order-server是一个集群,即使其中一个服务挂了,也不会影响文档的获取。

order-server

swagger配置类SwaggerConfig、order-server、 payment-serverswagger配置基本相同。

@配置

@EnableSwagger2

公共类SwaggerConfig {

@豆

公共Docket createRestApi() {

返回新的Docket(DocumentationType.SWAGGER_2)

.apiInfo(apiInfo())

。选择()

.apis(RequestHandlerSelectors.basePackage("w.m.vker.demo"))

.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))

.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))

.paths(PathSelectors.any())

。建造();

}

私有ApiInfo apiInfo() {

返回新的ApiInfoBuilder()

.title("订单系统api")

.description("订单系统接口文档说明")

.contact(新联系人("vker", "", "6492178@gmail.com"))

.版本("1.0")

。建造();

}

@豆

UiConfiguration uiConfig() {

返回新的UiConfiguration(null, "list", "alpha", "schema",

UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS,假,真,60000L);

}

}

swagger整合xrebel

xrebel是一个网页调试工具,可以参考XRebel使用教程。

xrebel的工作原理是跟踪页面上的各种请求并分析整个请求流程和时间消耗,而swagger则提供了页面在线接口调试功能。两者结合起来,可以在分析接口流程和缺陷的同时,快速调试接口。可以说是如虎添翼。

如图所示:

效果图

当你点击“try it in swagger”时,左下角的xrebel工具栏会记录发起请求的详细信息。

当我多次调用订单系统接口时,xrebel甚至可以通过负载均衡的方式显示zuul将此请求分发到哪个服务,如图:此处写图片说明

实现方法

将xrebel集成到zuul-server启动的vm选项中参数中,在zuul成功后,打开http://localhost:8081/xrebel页面,思考页面中间文本框中的js代码。

关于Spring Cloud Zuul网关在分布式系统中集成Swagger文档展示方法到此分享完毕,希望能帮助到您。

用户评论

箜篌引

这篇文章看起来很有帮助!我一直想要让我们的系统更易于使用和维护,集成 OpenAPI 文档听起来像是一个不错的解决方案。

    有14位网友表示赞同!

ヅ她的身影若隐若现

以前使用独立的服务来管理不同API的文档,真是太麻烦了。将它们整合到 Zuul 网关中节省好多时间啊!

    有19位网友表示赞同!

该用户已上天

对我们公司来说,Zuul 非常重要,因为它管理着所有API调用。看到能够通过它方便地整合 Swagger 文档,真的很惊喜!

    有11位网友表示赞同!

轨迹!

想了解一下如何将 Swagger 和 Zuul 集成,这篇文章应该能帮我解决这个问题!

    有12位网友表示赞同!

仅有的余温

最近一直在学习 Spring Cloud,关于网关和 API 管理的知识似乎都变得更加清晰。

    有19位网友表示赞同!

反正是我

这种方式可以为开发者提供一个集中且易于导航的文档中心,真是完美!

    有14位网友表示赞同!

绝版女子

希望这篇文章能具体说明配置过程,这样我就可以快速上手了。

    有18位网友表示赞同!

发型不乱一切好办

以前我一直用 Swagger UI 来管理文档,感觉 Zuul 网关能够提供更强大的功能。

    有11位网友表示赞同!

疲倦了

在我的项目中,我们使用了 Spring Cloud Gateway 和 OpenAPI,这篇文章看起来很实用!

    有13位网友表示赞同!

服从

我很想知道具体如何将Swagger文档嵌入 Zuul 网关页面,希望能有详细的步骤。

    有19位网友表示赞同!

半世晨晓。

这种整合方式可以改善 API 的可见性和使用效率!

    有11位网友表示赞同!

拽年很骚

在项目中使用 Zuul 网关能提高系统的灵活性和可维护性。

    有17位网友表示赞同!

瑾澜

希望这篇文章能涵盖不同 API 版本的管理,以及如何进行安全控制。

    有9位网友表示赞同!

断桥残雪

对于 Spring Cloud 框架用户来说,掌握网关和 Swagger 文档整合知识非常关键。

    有16位网友表示赞同!

嗯咯

将这些文档集中展示在一个页面上,使开发者能够快速了解系统接口信息。

    有13位网友表示赞同!

太难

整合过程中需要注意哪些重点?这篇文章能解答我的疑惑!

    有14位网友表示赞同!

纯情小火鸡

Spring Cloud Zuul 网关作为 API 管理中心,能够提高系统的可靠性和安全性。

    有19位网友表示赞同!

拥菢过后只剰凄凉

我很期待看到这个例子,希望能学习到如何实现这种整合方法。

    有9位网友表示赞同!

【Spring Cloud Zuul网关在分布式系统中集成Swagger文档展示方法】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:深入浅出:C#网络编程中的Socket技术详解 下一篇:回忆童年:我家曾经的温馨澡堂时光