gRPC-swagger gRPC 调试工具开源项目

我要开发同款
匿名用户2019年01月07日
120阅读
开发技术Java
所属分类RPC/XMLRPC项目、Web应用开发、程序调试工具
授权协议MIT

作品详情

简介

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.jarjava -jar grpc-swagger-web-0.0.1-SNAPSHOT.jar编译构建git clone https://github.com/grpc-swagger/grpc-swaggercd grpc-swaggermvn clean packagejava -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使用流程

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

启动服务时开启反射。下面是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();

注册实例,通过 register 将提供服务的实例注册到gRPC-swagger上,gRPC-swagger会自动扫描服务,注册完成之后会返回注册成功的服务。后面可以通过 listServices 接口查看注册成功的服务。为了方便使用,这里 提供了一个简单的html页面。

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

点击 Tryitout 进行服务测试

接口注册实例

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

Feelfreetoopenanissueorpullrequest.Wewillappreciateit!

FAQLicense

MITLicense.

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论