我的编程空间,编程开发者的网络收藏夹
学习永远不晚

grpcurl通过命令行访问gRPC服务

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

grpcurl通过命令行访问gRPC服务

前言

一般情况下测试 gRPC 服务,都是通过客户端来直接请求服务端。如果客户端还没准备好的话,也可以使用 BloomRPC 这样的 GUI 客户端。

如果环境不支持安装这种 GUI 客户端的话,那么有没有一种工具,类似于 curl 这样的,直接通过终端,在命令行发起请求呢?

答案肯定是有的,就是本文要介绍的 grpcurl

gRPC Server

首先来写一个简单的 gRPC Server:

helloworld.proto

syntax = "proto3";
package proto;
// The greeting service definition.
service Greeter {
    // Sends a greeting
    rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
    string name = 1;
}
// The response message containing the greetings
message HelloReply {
    string message = 1;
}

main.go

package main
import (
    "context"
    "fmt"
    "grpc-hello/proto"
    "log"
    "net"
    "google.golang.org/grpc"
    "google.golang.org/grpc/reflection"
)
func main() {
    lis, err := net.Listen("tcp", ":50051")
    if err != nil {
        log.Fatalf("failed to listen: %v", err)
    }
    server := grpc.NewServer()
    // 注册 grpcurl 所需的 reflection 服务
    reflection.Register(server)
    // 注册业务服务
    proto.RegisterGreeterServer(server, &greeter{})
    fmt.Println("grpc server start ...")
    if err := server.Serve(lis); err != nil {
        log.Fatalf("failed to serve: %v", err)
    }
}
type greeter struct {
}
func (*greeter) SayHello(ctx context.Context, req *proto.HelloRequest) (*proto.HelloReply, error) {
    fmt.Println(req)
    reply := &proto.HelloReply{Message: "hello"}
    return reply, nil
}

运行服务:

go run main.go
server start ...

grpcurl 安装

这里我介绍三种方式:

Mac

brew install grpcurl

Docker

# Download image
docker pull fullstorydev/grpcurl:latest
# Run the tool
docker run fullstorydev/grpcurl api.grpc.me:443 list

go tool

如果有 Go 环境的话,可以通过 go tool 来安装:

go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest

grpcurl 使用

查看服务列表:

grpcurl -plaintext 127.0.0.1:50051 list

输出:

grpc.reflection.v1alpha.ServerReflection
proto.Greeter

查看某个服务的方法列表:

grpcurl -plaintext 127.0.0.1:50051 list proto.Greeter

输出:

proto.Greeter.SayHello

查看方法定义:

grpcurl -plaintext 127.0.0.1:50051 describe proto.Greeter.SayHello

输出:

proto.Greeter.SayHello is a method:
rpc SayHello ( .proto.HelloRequest ) returns ( .proto.HelloReply );

查看请求参数:

grpcurl -plaintext 127.0.0.1:50051 describe proto.HelloRequest

输出:

proto.HelloRequest is a message:
message HelloRequest {
  string name = 1;
}

请求服务:

grpcurl -d '{"name": "zhangsan"}' -plaintext 127.0.0.1:50051 proto.Greeter.SayHello

输出:

{
  "message": "hello"
}

可能遇到的错误

可能会遇到两个报错:

1、gRPC Server 未启用 TLS:

报错信息:

Failed to dial target host "127.0.0.1:50051": tls: first record does not look like a TLS handshake

解决:

请求时增加参数:-plaintext,参考上面的命令。

2、参数格式错误:

报错信息:

Error invoking method "greet.Greeter/SayHello": error getting request data: invalid character 'n' looking for beginning of object key string

解决:

-d 后面参数为 json 格式,并且需要使用 '' 包裹起来。

总结

用这个工具做一些简单的测试还是相当方便的,上手也简单。只要掌握文中提到的几条命令,基本可以涵盖大部分的测试需求了

扩展阅读:

https://appimage.github.io/BloomRPC/

https://github.com/fullstorydev/grpcurl

源码下载地址:https://github.com/yongxinz/gopher/tree/main/blog

以上就是grpcurl通过命令行访问gRPC服务的详细内容,更多关于grpcurl命令行访问gRPC服务的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

grpcurl通过命令行访问gRPC服务

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

grpcurl如何通过命令行访问gRPC服务

本篇内容主要讲解“grpcurl如何通过命令行访问gRPC服务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“grpcurl如何通过命令行访问gRPC服务”吧!gRPC Server首先来写一个简
2023-07-02

Linux中怎么通过命令行访问Dropbox

这篇文章主要讲解了“Linux中怎么通过命令行访问Dropbox”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux中怎么通过命令行访问Dropbox”吧!在当今这个多设备的环境下,云存
2023-06-16

如何通过命令行连接到Redis服务器

要通过命令行连接到Redis服务器,您需要使用redis-cli命令。下面是连接到Redis服务器的步骤:打开终端或命令提示符窗口。输入以下命令以连接到Redis服务器:redis-cli -h -p 其
如何通过命令行连接到Redis服务器
2024-04-09

通过云服务器访问外网

如果您要通过云服务器访问外网,那么您需要使用相应的网络协议和数据加密技术来确保传输的数据安全和隐私性。以下是几种可以实现此功能的技术方法:VPN隧道:VPN隧道是一种将云服务器与您的互联网连接起来的方法。用户可以使用VPN隧道技术在公共网络上连接他们的云服务器,以便访问互联网。代理服务器:代理服务器是一种将一个网站或应用程序与其用户端相互通讯的服务器。用户可以使用代理服务器来访问他们的用
2023-10-26

阿里云服务器通过ip访问

阿里云服务器通过IP访问需要具备两个条件:使用公网IP地址使用https协议在使用公网IP地址的情况下,需要将服务器连接至公网,并进行相应的配置和管理。可以通过使用路由器、防火墙等设备来实现此功能。在使用https协议的情况下,需要进行相应的协议配置,以确保数据在传输和存储过程中的安全。具体的实现方式可能因不同的云服务商而异,需要根据具体的要求进行配置。
2023-10-26

通过云服务器访问外网ip

首先,从网络安全的角度来看,云服务器访问外网IP的风险主要表现在以下几个方面:网络攻击风险:云服务器作为一个虚拟的服务器,其安全性取决于多个因素,包括服务器软件的漏洞、网络流量的传输情况等。如果黑客通过云服务器漏洞攻击,将会给网站和用户带来巨大的损失。因此,云服务器运营商必须加强网络安全措施,包括安装防火墙、定期更新系
2023-10-27

如何通过命令行工具保护你的Linux服务器

要通过命令行工具保护Linux服务器,可以采取以下措施:1. 更新和维护系统:定期更新操作系统和软件包,以修复已知漏洞,并确保服务器的安全性。2. 使用防火墙:设置防火墙规则以限制对服务器的访问。可以使用防火墙工具如iptables或fir
2023-10-18

如何通过云服务器访问外网

要通过云服务器访问外网,可以按照以下步骤操作:首先需要安装云服务器的配置工具,可以通过在官网(https://opencloud.cloud-devel.com/cn/installer)下载相应的产品包并进行安装。登录到云服务器管理界面,选择要连接的云服务器,填写服务器的IP地址和端口号(通常需要使用云服务器默认端口号)。完成连接后,进入云服务器的配置界面,可以查看云服务器的配置信息,
2023-10-26

如何通过域名访问云服务器

要通过域名访问云服务器,您需要进行以下步骤:1. 购买一个域名:您可以通过注册域名的服务提供商购买一个域名。选择一个易于记忆且与您的业务相关的域名。2. 配置域名解析:登录您购买域名的服务提供商的控制面板,在域名解析设置中添加一条A记录或C
2023-09-25

通过云服务器访问家里电脑

如果您想通过云服务器访问家里的电脑,可以按照以下步骤操作:确认自己的网络连接状况:确保家里的网络连接是正常的,如果不是,需要检查您的网络连接是否正常。选择适当的云服务:根据您的需求选择适当的云服务。有些云服务提供视频会议、在线教育等服务,需要根据自己的需求决定是否使用该服务。例如,如果您需要远程协作,可以选择使用GoogleCloudPlatform;如果您需要在家办公,可以选择使用Mic
2023-10-26

如何通过域名访问云服务器

通过域名访问云服务器的五步指南:绑定域名:将域名指向云服务器IP地址。配置服务器:设置服务器主机名或域名。配置DNS设置:将名称服务器更新为云服务器提供商的名称服务器。验证连接:使用Ping命令验证连接。使用域名访问服务器:在Web浏览器中输入您的域名以访问云端资源。
如何通过域名访问云服务器
2024-04-11

如何通过云服务器访问内网

1.了解内网和云服务器在开始之前,我们需要了解一些基本概念。内网是指一个私有网络,只有内部设备可以相互通信,外部设备无法直接访问。云服务器是指在云计算平台上租用的虚拟服务器,可以通过公网访问。2.配置内网设备要让云服务器访问内网,我们需要在内网中配置一些设备。首先,我们需要一个内网网关,它可以将内网和公网连接起来。其次,我们需要在内网中配置一台服务器,作为内网的代理服务器。最后,我们需要在
2023-10-26

通过命令行工具提高你的Linux服务器安全性

有几种方法可以通过命令行工具提高Linux服务器的安全性:1. 使用防火墙:使用iptables或ufw等工具配置防火墙规则,限制对服务器的访问。可以禁止不必要的端口和服务,并只允许来自特定IP地址或IP范围的访问。2. 更新和升级软件:使
2023-10-18

如何通过阿里云服务器进入cmd命令行界面

本文主要介绍了如何通过阿里云服务器进入cmd命令行界面,详细介绍了步骤和方法,希望对有需要的读者有所帮助。正文:在使用阿里云服务器的过程中,我们有时需要通过cmd命令行界面进行操作。那么,如何才能进入阿里云服务器的cmd命令行界面呢?以下是一些具体的步骤和方法。首先,我们需要登录到阿里云服务器。这可以通过阿里云的
如何通过阿里云服务器进入cmd命令行界面
2023-11-14

通过命令行工具提高你的Linux服务器安全性

通过命令行工具提升Linux服务器安全性:设置强密码、禁用未使用的服务、安装安全工具(Fail2ban、UFW、Logwatch)、安全配置SSH、定期更新和修补,以及实施其他安全措施(SELinux、日志聚合、安全审计、VPN、两因素认证、IDS、漏洞扫描)。
通过命令行工具提高你的Linux服务器安全性
2024-04-11

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录