java ui调试_【gRPC】如何便捷的调试gRPC程序

前言

gRPC是一款广泛应用的rpc框架,因为基于C/S架构,服务启动之后,需要编写对应的客户端才能调用,调试起来相对麻烦一些,这里主要介绍一下如何通过swagger-ui来调试grpc服务。

grpc-swagger

gRPC-swagger 是基于 gRPC 反射开发的一款 gRPC 调试工具,可以使用 swagger-ui 方便地展示和调用 gRPC 方法。因为 gRPC-swagger 是基于反射开发,所以使用时无需修改 proto 及相关的代码实现,只需在启动服务时开启反射功能(不只java,其他语言也可以)。下图是使用效果

5e45d489fa948168fde9ecc5b3070a89.gif

项目地址

使用方法

启动grpc-swagger服务

grpc-swagger是基于spring boot开发,可以下载jar包直接运行:

wget https://github.com/grpc-swagger/grpc-swagger/releases/latest/download/grpc-swagger.jar

java -jar grpc-swagger.jar

启动服务时开启反射

该工具是基于gRPC反射做的,所以需要在启动服务时开启反射,下面是java开启反射的方式:

添加依赖

io.grpc

grpc-services

${grpc.version}

开启反射

Server server = ServerBuilder.forPort(SERVER_PORT)

.addService(new HelloServiceImpl())

// 这里开启反射

.addService(ProtoReflectionService.newInstance())

.build()

.start();

注册服务

因为我们一开始并不知道对应的gRPC服务提供哪些服务方法,所以这里有个注册服务的过程,其所做的事就是输入目标服务的地址,然后通过反射来获取当前gRPC服务提供的服务方法。当前提供一个简单的页面,地址是 http://localhost:8080/ui/r.html,在Endpoint Register里填入grpc 服务的地址,成功注册之后会在 Services 里列出可用的服务

10e07cc9ca0eab0ab22c09639d6a706b.png

使用 swagger-ui 调用gRPC服务

下面就比较简单了,通过链接跳过来就是一个swagger-ui的页面,点击 Try it out 就可以开始调试了。

6e501640d45f1781d90784ea8a31f10d.png

实现原理

这里说下大概的实现原理:

gRPC 提供了反射的功能,通过反射,我们可以实现获取服务的定义、动态的调用gRPC方法、JSON和PB相互转换等功能,这里的实现主要是利用了这个功能。

Swagger-ui 也提供了文档的格式规范,我们将获取到的gRPC服务定义转换成swagger-ui需要的格式,就可以使用swagger-ui来进行服务定义的展示和调用了。

如果还有兴趣的同学,可以去看下源码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值