【grpcurl】使用grpcurl测试GRPC服务

news/2024/11/15 6:16:32/文章来源:https://www.cnblogs.com/fireblackman/p/18355638

一、场景

    由于我们需要访问GRPC服务的方法,便于我们进行测试,所以我们开启了grpc服务的反射机制

 

二、安装grpcurl

    https://github.com/fullstorydev/grpcurl

   https://github.com/fullstorydev/grpcurl/releases 下载对应环境的包即可

sudo dpkg -i grpcurl_1.9.1_linux_amd64.deb

ubuntu系统安装

 

三、服务端代码

# Copyright 2018 The gRPC Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""The reflection-enabled version of gRPC helloworld.Greeter server."""
import time
from concurrent import futures
import loggingimport grpc
from grpc_reflection.v1alpha import reflection
from grpc_reflection.v1alpha import reflection_pb2_grpc
import helloworld_pb2
import helloworld_pb2_grpcclass Greeter(helloworld_pb2_grpc.GreeterServicer):def SayHello(self, request, context):print(time.time())return helloworld_pb2.HelloReply(message="Hello, %s!" % request.name)def serve():server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))helloworld_pb2_grpc.add_GreeterServicer_to_server(Greeter(), server)SERVICE_NAMES = (helloworld_pb2.DESCRIPTOR.services_by_name["Greeter"].full_name,reflection.SERVICE_NAME,)reflection.enable_server_reflection(SERVICE_NAMES, server)# server.add_insecure_port("[::]:50051")server.add_insecure_port("127.0.0.1:50051")server.start()server.wait_for_termination()if __name__ == "__main__":logging.basicConfig()serve()

需要安装

pip install grpcio_reflection

 

四、使用

1、查看服务及接口信息

$ grpcurl --plaintext  localhost:50051 describe
grpc.reflection.v1alpha.ServerReflection is a service:
service ServerReflection {rpc ServerReflectionInfo ( stream .grpc.reflection.v1alpha.ServerReflectionRequest ) returns ( stream .grpc.reflection.v1alpha.ServerReflectionResponse );
}
helloworld.Greeter is a service:
service Greeter {rpc SayHello ( .helloworld.HelloRequest ) returns ( .helloworld.HelloReply );rpc SayHelloBidiStream ( stream .helloworld.HelloRequest ) returns ( stream .helloworld.HelloReply );rpc SayHelloStreamReply ( .helloworld.HelloRequest ) returns ( stream .helloworld.HelloReply );
}

 

2、查看服务信息

$ grpcurl --plaintext  localhost:50051 list
grpc.reflection.v1alpha.ServerReflection
helloworld.Greeter

 

3、调用grpc服务方法

$ grpcurl --plaintext -d '{ "name": "World" }' localhost:50051 helloworld.Greeter/SayHello
{"message": "Hello, World!"
}

 

 

五、问题

1、$ grpcurl localhost:50051 describe
Failed to dial target host "localhost:50051": tls: first record does not look like a TLS handshake

由于默认是TLS加密,我们起的服务不支持,所以需要使用--plaintext参数

 

参考链接:

在 ASP.NET Core 中使用 gRPCurl 和 gRPCui 测试 gRPC 服务 | Microsoft Learn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/781925.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windbg 搭建双机调试环境

当我们搭建好驱动开发环境后,就可以设置双机调试了,虚拟机的安装可以参考网上其他教程,比较简单,我们直接来讲设置双击调试需要注意的一些地方。 1.设置被调试的虚拟机 首先,将虚拟机关机,如果此时已经有了串行端口存在首先移除,管道名字输入 \\.\pipe\com_1,并选择“该…

windbg 搭建双击调试环境

当我们搭建好驱动开发环境后,就可以设置双机调试了,虚拟机的安装可以参考网上其他教程,比较简单,我们直接来讲设置双击调试需要注意的一些地方。 1.设置被调试的虚拟机 首先,将虚拟机关机,如果此时已经有了串行端口存在首先移除,管道名字输入 \\.\pipe\com_1,并选择“该…

NDT算法详解与C++实现

点云匹配在感知环节是一个很重要的信息获取手段,而其中的算法也有几个比较经典了,例如ICP(Iterative Closest Point,迭代最近点)算法,而本文决定记录学习的是NDT算法,也就是Normal Distribution Transform,正态分布变换算法。什么是正态分布变换算法呢,简言之,就是把…

HBase学习的第一天--hbase的简介和搭建

HBase架构与基础命令 一、了解HBase 1.1 HBase概述HBase是基于Hadoop中HDFS做存储的数据库HBase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,用于存储海量的结构化或者半结构化,非结构化的数据(底层是字节数组做存储的) HBase是Hadoop的生态系统之一,是建立…

实景三维:解锁地理信息新维度,引领未来城市智慧之钥

在这个信息爆炸与科技日新月异的时代,地理信息与遥感技术正以前所未有的速度改变我们认知世界的方式。在推动“实景三维平台”这一前沿科技的构建上,它不仅是地理信息的立体呈现,更是智慧城市的基石,打开了通往未来城市规划、管理、决策与服务的新视界。实景三维平台:数字…

【Linux系列】内核参数

sysctl命令常用参数 RAID性能参数调优 网络协议栈调整:单位是字节 TCP并发性能优化 对于用不上IPV6的建议直接禁用 TCP keepalive时长控制 memory OOM控制 安全防护模块 保障TCP通信质量 IO密集性服务器优化参数 路由器选项控制 路由机制控制 内存大页面使用策略内核参数主要保…

外心与垂心

外心(这三条结论并不完全是平凡的) 1、 \(\angle BOC=2\angle A\) 2、 \(\angle CBO+\angle A=Rt \angle\) 3、 \(O\) 在三角形三边的中垂线上 例1如图,\(\triangle ABC\) 内接于圆 \(O\) ,\(AD\perp BC\) ,延长 \(CD,BD\) 交圆 \(O\) 于点 \(F,E\) ,作 \(DE,DF\) 中垂线…

计算机体系结构技术杂谈(上)

计算机体系结构技术杂谈(上) 2.1 计算机的层次结构 2.1.1基本概念介绍 1. 计算机基本概念 1) 机器数:用0和1编码的计算机内部的0/1序列。 2) 真值:机器数真正的值,即:现实中带正负号的数(通常指带符号二进制数对应的真正的数值)。 3) 定点数:将一个实数表示为带有固…

驱动开发环境搭建

1.安装 VS2019 首先,我们需要安装 VS2019,资源链接如下: VS2019 + WDK: https://pan.baidu.com/s/1LYIn1MXLjY_zgEgLr8SgYA?pwd=xyji 在安装的时候我们需要注意务必要注意,图上已勾选的选项必须要全部勾选,漏勾可能会导致各种奇怪的问题! 可选部分我们需要勾选的安装项如…

Jetbrains Fleet: 很好, 但是谁在乎呢?

作者对Jetbrains Fleet项目的发展历程进行了回顾和批评,认为其缺乏IDE的第一性以及Jetbrains工程便利。虽然现在支持自定义插件,但插件开发难度大且资源不足,面临Vscode等竞争对手的压力,Jetbrains Idea也停滞不前,新UI等更新未能带来实质性改进。作者表示不再购买Jetbrai…

pritunl安装及配置https证书

1、pritunl 简介#官方网站 https://pritunl.com/ ​ #官方文档 https://docs.pritunl.com/docs ​ #Github项目地址 https://github.com/pritunl/pritunl ​ #客户端下载地址(也可以使用OpenVPN作为客户端) https://client.pritunl.com/#install https://openvpn.net/client …

ClueCon 2024:音视频开发者的技术盛会

前面的话:ClueCon 是音视频开发者的年度技术盛会,每年都在美国芝加哥举行。RTE 开发者社区的联合主理人杜金房在即将踏上 ClueCon 之际,写下了这段文字。也邀请大家一同关注这次大会。时间过得真快,转眼,又是一届新的 ClueCon 了。ClueCon 是一个音视频开发者的年度技术盛…