gRPC-swagger

gRPC 调试工具
授权协议 MIT
开发语言 Java
所属分类 Web应用开发、 RPC/XMLRPC项目
软件类型 开源软件
地区 国产
投 递 者 松阳泽
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

简介

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.

  • 有人说,程序员最讨厌两件事情,一件是写文档,一件是别人不写文档,这充分展现了人类双标的本质,所谓的“严于律人”、“宽于律己”就是在说这件事情。虽然这种听来有点自私的想法,是生物自然选择的结果,可一旦人类的大脑皮层在进化过程中产生了“理性”,就会试图去纠正这种来自动物世界的阴暗面。所以,人类双标的本质,大概还是因为这个行为本身就有种超越规则、凌驾于众人之上的感觉,毕竟每个人生来就习惯这种使用特权的感

  • ​ 之前我们团队在 Go 语言上已经统一使用 gRPC + grpc-gateway 来提供 API 服务,最近为了写一个提供一个用于管理分析任务的接口服务,需要使用 Java 来实现(因为需要访问 HBase/HDFS/Flink等,Java 最方便),而 GRPC Gateway 本身是跟语言无关的,所以我就趁着这次机会尝试了一把,发现效果还挺好的 需要了解的基础Protocol buffer

  • Grpc_swagger 1.下载grpc_swagger.jar 包,下载地址:https://github.com/grpc-swagger/grpc-swagger 2.运行:用Git $ cd d:/Java $ java -jar grpc-swagger.jar –server.port=8888 默认是8080端口,如果需要修改端口 加–server.port=xxxx; 启动成功:

  • 一、概述 在现代的微服务架构中,网关是一个非常重要的组件。它负责接收和处理客户端请求,并将它们转发给相应的服务。而gRPC Gateway则是一个Golang工程组件,它可以将RESTful API转换为gRPC API,从而方便我们使用gRPC协议进行服务之间的通信。本文将介绍gRPC Gateway的基本概念、安装和使用方法。 二、什么是gRPC Gateway gRPC Gateway是一个

  • 0. 先决必要条件:golang 1.9+,这里略过。 1. quick install 来自这里 https://github.com/grpc/homebrew-grpc brew tap grpc/grpc brew install --with-plugins grpc 2. 从代码编译安装 2.1 protobuf install brew install autoconf automa

  • go-grpc 代码库及其工具 1. 什么是 Protocol Buffer Protobuf(全称Protocol Buffer)是Google 出品的一种数据描述语言,可类比于json,独立于语言与平台。 Protobuf 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,总得来说就是更小、更快、更简单

 相关资料
  • 概述 最近这段时间工作挺忙的,发现已经 3 周没更文了... 感谢你们还在,今天给大家分享一款 gRPC 的调试工具。 进入正题。 当我们在写 HTTP 接口的时候,使用的是 Postman 进行接口调试,那么在写 gRPC 接口的时候,有没有类似于 Postman 的调试工具呢? 这是有的。 咱们一起看下 grpcui,源码地址: https://github.com/fullstorydev/

  • 用于Chrome远程调试协议的替代传输。 进程: 主进程​ Chrome调试工具在JavaScript运行时具有特殊绑定,允许与页面交互并对其进行检测。 1 const {BrowserWindow} = require('electron') 2 let win = new BrowserWindow() 3 ​ 4 try { 5 win.webContents.debugger.attach

  • 快速免责声明,我是非常新的gRPC和RPC一般,所以请有耐心 对等点列表、是在以前的rpc调用中构建的。 客户 服务器端实现,

  • 控制调试工具 控制调试工具用来管理调试当中的程序运行,提供了如下常用功能: 暂停、恢复程序运行; 终止进程 查看、禁用断点 获取线程堆栈 恢复程序运行 当程序在断点处暂停的时候,可以使用此功能来恢复程序运行. 如果有下一个断点, 就会跳转下一个断点处. 如果没有断点,程序就继续运行. 操作步骤: 调试工具栏: Resume Program 快捷键: Mac: option + command +

  • 现提供基于Visual Studio Code的调试插件(beta版) zip包中包含有使用说明,具体安装使用方法可解压后查看 Mac版本下载地址 windows版本下载地址 XCode下的bricks工程 下载地址

  • webpack dev-server webpack-dev-server 是一个小型的 Node.js Express 服务器,它使用 webpack-dev-middleware 中间件来为通过 Webpack 打包生成的资源文件提供 Web 服务。它还有一个通过 Socket IO 连接着 webpack-dev-server 服务器的小型运行时程序。webpack-dev-server 发

  • 1 adb的安装和使用 2 GDB调试环境搭建 3 录音工具vspdump使用指南

  • 本文向大家介绍JavaScript调试工具汇总,包括了JavaScript调试工具汇总的使用技巧和注意事项,需要的朋友参考一下 现在的JavaScript事实上已然成为了流行的web语言,即使它并不完美。很多程序员不喜欢用JavaScript写代码,是因为写到后来总会出现各种莫名其妙的bug,而且在开发大型应用程序的过程中很容易犯错。而且鉴于当今此类工具的现状,要想在浏览器上做JavaScript