gRPC 调试工具 gRPC-swagger

MIT
Java
跨平台
2019-01-07
liuzhengyang

简介

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

特点

  • 简单易用,只需启动服务时允许反射,无需修改 proto 及相关的实现。

  • 集成 swagger-ui,可以方便的查看 gRPC 方法和参数定义。

  • 通过 http 方式调用 gRPC 服务,极大的提高了测试效率。

运行截图

在线实例

demo

部署运行

使用打包好的jar包

wget https://github.com/grpc-swagger/grpc-swagger/releases/download/0.1.1/grpc-swagger-web-0.0.1-SNAPSHOT.jar
java -jar grpc-swagger-web-0.0.1-SNAPSHOT.jar

编译构建

git clone https://github.com/grpc-swagger/grpc-swagger
cd grpc-swagger
mvn clean package
java -jar grpc-swagger-web/target/grpc-swagger-web-0.0.1-SNAPSHOT.jar

默认使用8080端口,如果使用其他端口可以通过--server.port=端口号的方式设置

java -jar grpc-swagger-web/target/grpc-swagger-web-0.0.1-SNAPSHOT.jar --server.port=8888

使用流程

  1. 运行 gRPC-swagger,具体参考部署运行

  2. 启动服务时开启反射。下面是 java 示例
    pom.xml 中添加依赖

    <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-services</artifactId>
        <version>${grpc.version}</version>
    </dependency>

    启动服务时允许反射:

    Server server = ServerBuilder.forPort(SERVER_PORT)
        .addService(new HelloServiceImpl())
        .addService(ProtoReflectionService.newInstance())
        .build()
        .start();
  3. 注册实例,通过 register 将提供服务的实例注册到 gRPC-swagger 上,gRPC-swagger 会自动扫描服务,注册完成之后会返回注册成功的服务。后面可以通过 listServices 接口查看注册成功的服务。为了方便使用,这里 提供了一个简单的 html 页面。

  4. 使用 swagger-ui 查看 gRPC 服务,在输入框中输入 <host:port>/v2/api?service=<fullServiceName>,其中fullServiceName 就是上面返回注册成功的服务。

  5. 点击 Try it out 进行服务测试

接口

注册实例

url:/register

参数:

  • host - 地址(必填)

  • port - 端口(必填)

  • groupName - 分组名(选填),默认是 host:port,通过指定分组名可以将部署相同服务的实例归为一组

返回示例

{
    "code": 0, 
    "data": {
        "groupName": "localhost:12347", 
        "services": [
            "io.grpc.grpcswagger.showcase.HelloService"
        ], 
        "endpoints": [
            "localhost:12347"
        ], 
        "success": true
    }
}

服务列表

url: /listServices

返回示例

{
    "code": 0,
    "data": {
        "localhost:12347": {
            "groupName": "localhost:12347",
            "services": [
                "io.grpc.grpcswagger.showcase.HelloService"
            ],
            "endpoints": [
                "localhost:12347"
            ],
            "success": true
        }
    }
}

调用 gRPC 方法

url: /{rawFullMethodName}

参数:

  • rawFullMethodName - 需要调用方法的完整名,例如 io.grpc.grpcswagger.showcase.HelloService.GetUser

  • payload - gRPC 方法参数,JSON 格式。可以使用 endpoint 参数,来指定需要调用的实例。

返回结果就是方法执行结果。

Swagger 接口

url: /v2/api-docs

返回 swagger-ui 展示需要的数据。

参数:

  • service - 完整的 services 名称,就是 listServices 中返回的 services 里的值

致谢

感谢 polyglot 项目,本项目中 gRPC 反射相关逻辑基于该项目进行修改。

Contribute

Feel free to open an issue or pull request. We will appreciate it!

FAQ

License

MIT License.

的码云指数为
超过 的项目
加载中

评论(10)

jygyt
jygyt

引用来自“jygyt”的评论

有没有具体的demo看一下

引用来自“liuzhengyang”的评论

http://ui.grpcs.top/ 这里有个在线的demo
用的是springboot都封装好了。。。。。。
左华栋
左华栋

引用来自“左华栋”的评论

要是 go 或者 node 就好了。 java 安装个管理简直了

引用来自“liuzhengyang”的评论

我们看下怎么弄个一键安装版😄
基于 electron 写个桌面软件也挺好。可以跨平台
liuzhengyang
liuzhengyang 软件作者

引用来自“左华栋”的评论

要是 go 或者 node 就好了。 java 安装个管理简直了
我们看下怎么弄个一键安装版😄
liuzhengyang
liuzhengyang 软件作者

引用来自“jygyt”的评论

有没有具体的demo看一下
http://ui.grpcs.top/ 这里有个在线的demo
jygyt
jygyt
在springboot中怎么实现能具体告之一下吗?
百度先生
https://my.oschina.net/jfxly/
jygyt
jygyt
有没有具体的demo看一下
左华栋
左华栋
要是 go 或者 node 就好了。 java 安装个管理简直了
ChengShuai
ChengShuai
终于看到一个grpc的测试工具了,支持!
dreamhack
dreamhack
666

暂无资讯

暂无问答

GRPC-java的简单使用

GRPC的简介 (1)在gRPC中客户端可以直接调用运行在不同机器上服务器端的方法,与其它RPC(远程方法调用)一样,定义一个方法,可以被远程使用参数调用,然后通过返回值进行响应。 (2)服务器...

2018/12/14 11:55
15
0
springboot整合gprc 传输对象

一,grpc简介: GRPC是google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf 3.x,基于Netty 4.x +。GRPC与thrift、avro-rpc等其实在总体原理上并没有太大的区别,简而言之...

2018/04/26 10:27
235
1
gRPC学习笔记

gRPC 参考文档 gRPC简单实例及流程分析 gRPC初体验 通过实例带你学习RPC框架gRPC grpc-java Exception in thread main java.lang.NoClassDefFoundError: io/netty/channel/socket/nio/NioSo...

2018/07/22 11:04
31
0
gRPC Windows编译应用

## gRPC Windows编译 从github上clone出来后进行cmake的编译,参考上面的文档,需要注意的点: - 必须安装所有的依赖,包括Perl,Go,YASM,Git,CMake - 不要使用--recursive来递归clone,因...

2018/06/20 09:15
260
0
gRPC 小记

创建一个maven项目demo-grpc 包含三个子模块: grpc-common:公共模块定义proto及生成java代码; grpc-server:grpc 服务端; grpc-client:grpc客户端。 其中grpc-server、grpc-client 为s...

2018/09/04 11:48
33
0
Golang 微服务 - 01 环境和工具

注意:主机操作系统为 Windows SDK 下载地址 https://studygolang.com/dl,安装略 验证是否成功,控制台中输入 go env 相关环境变量: 添加环境变量 GOPATH,值为 C:\Users\your-host-name\...

2018/09/15 19:57
27
0
PHP平台下使用gRPC

概念 gRPC:基于RPC的一种远程调用协议(php平台只支持gRPC客户端调用,不支持gRPC服务端实现) Protobuf:语言无关的高效数据交换协议,用于支持gRPC在不同语言间序列化和反序列化数据,具体...

2018/05/28 11:53
677
0
[笔记] consul用grpc做健康检查注意点

先上个代码片段开胃 ``` registration := &consulapi.AgentServiceRegistration{ Address: address, Port: port, ID: id, Name: serviceName, Check: &consulapi.AgentServiceCheck{ GRPC: f...

2018/04/21 14:08
469
0
兄弟连区块链教程Fabric1.0源代码gRPC(Fabric中注册的gRPC Service)一

  区块链教程Fabric1.0源代码分析gRPC(Fabric中注册的gRPC Service)一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实...

2018/11/08 14:49
10
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部