当前位置: 首页 > news >正文

直接通过类CURL方式,与GRPC方法交互的命令行工具

大家好,今天给大家分享的是一个命令行工具grpcurl,它能够直接与 gRPC 服务进行交互。

项目介绍

您可以把grpcurl想象成是 curl 的 gRPC 版本,但是功能更加强大。

由于 gRPC 服务之间的通信使用的是 Protocol Buffers (Protobuf) 格式的二进制编码,传统的 curl 工具无法直接处理。而 grpcurl 则专门为 gRPC 服务设计,可以方便地发送请求并查看响应。

主要特点

  • 支持所有 gRPC 方法: 包括 unary, server-streaming, client-streaming 和 bidirectional streaming 等。

  • 支持多种传输协议: 支持 plain-text (HTTP/2) 和 TLS,并且对于 TLS 有大量的可选项配置,同时支持双向 TLS。

  • 易于使用: 提供了直观的命令行接口,方便用户快速上手。

  • 可扩展性强: 支持自定义插件,可以扩展 grpcurl 的功能。

典型使用场景

  • 开发阶段: 在开发 gRPC 服务的过程中,可以使用 grpcurl 来测试服务是否正常工作,以及各个接口的返回值是否符合预期。
  • 运维阶段: 在运维 gRPC 服务的过程中,可以使用 grpcurl 来诊断问题,例如检查服务是否可用、请求是否超时等。

安装使用

安装

二进制文件

通过Github发布页进行下载安装

Mac

brew install grpcurl

Docker

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

golang

如果你已经安装了Go SDK,则可以使用该go 工具进行安装grpcurl:

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

使用

grpcurl -plaintext localhost:50051 <service>.<method>
  • -plaintext: 指定使用 plain-text (HTTP/2) 协议。
  • localhost:50051: gRPC 服务的地址和端口。
  • <service>.<method>: 要调用的 RPC 方法。

更多高级用法

grpcurl 提供了丰富的选项,可以满足各种复杂的场景。例如:

指定请求参数:

grpcurl -plaintext localhost:50051 <service>.<method> --json='{"field1": "value1", "field2": 2}'

设置超时时间:

grpcurl -plaintext -timeout 5s localhost:50051 <service>.<method>

使用 TLS:

grpcurl -plaintext -cacert ca.crt -cert client.crt -key client.key localhost:50051 <service>.<method>

更多用法,请查看帮助文档:

grpcurl -help

grpcurl 是一个非常有用的工具,可以大大简化 gRPC 服务的开发和测试。如果你正在使用 gRPC,强烈建议你尝试一下 grpcurl。

项目地址

https://github.com/fullstorydev/grpcurl

直接通过类CURL方式,与GRPC方法交互的命令行工具 - BTool博客 - 在线工具软件,为开发者提供方便 

相关文章:

直接通过类CURL方式,与GRPC方法交互的命令行工具

大家好&#xff0c;今天给大家分享的是一个命令行工具grpcurl&#xff0c;它能够直接与 gRPC 服务进行交互。 项目介绍 您可以把grpcurl想象成是 curl 的 gRPC 版本&#xff0c;但是功能更加强大。 由于 gRPC 服务之间的通信使用的是 Protocol Buffers (Protobuf) 格式的二进…...

Hive3:数据的加载与导出

一、加载数据 在创建表之后&#xff0c;表中没有数据&#xff0c;我们不可能insert存入数据。 而是&#xff0c;通过数据加载&#xff0c;将HDFS中的数据关联到Hive表中。 建表 CREATE TABLE myhive.test_load(dt string comment 时间&#xff08;时分秒&#xff09;, user_…...

React事件绑定的方式有哪些?区别?

React 中事件绑定的方式主要有以下几种&#xff1a; 直接在 JSX 中绑定事件&#xff1a; <button onClick{handleClick}>Click me</button> 这是最常见和推荐的方式。事件名&#xff08;如 onClick&#xff09;作为 JSX 的属性&#xff0c;值为一个函数&#xff0c…...

ibis:极具潜力的Python数据分析新框架

今天要给大家介绍的Python框架叫做ibis&#xff0c;没错&#xff0c;跟著名连锁酒店宜必思同名&#xff0c;其作者是创造了pandas、Arrow等著名框架的Wes McKinney。 ibis的核心理念是用同一套数据框操作API&#xff0c;统一操纵各种主流的数据运算框架&#xff0c;使得用户可以…...

SQL Zoo 8+.NSS Tutorial

以下数据来自SQL Zoo 1.at Edinburgh Napier University&#xff0c;studying (8) Computer Science&#xff0c;Show the the percentage who STRONGLY AGREE.&#xff08;在爱丁堡纳皮尔大学&#xff0c;学习“计算机科学”&#xff0c;显示STRONGLY AGREE的百分比&#xff0…...

conda pack迁移环境

文章目录 下载conda pack打包已有环境还原环境 因为有的服务器没有网络&#xff0c;如果想要安装自己的虚拟环境&#xff0c;就需要在有网络的服务器安装好环境后迁移到没有网络的服务器。conda-pack是一个命令行工具&#xff0c;用于打包 conda 环境&#xff0c;pip inatall和…...

UML建模案例分析-活动图商业建模

概述 活动图主要用来描述如何完成工作以及做什么工作。可以用活动图来描述操作、类或 用例&#xff0c;但是它们只能显示工作流。可以用活动图来进行商业建模&#xff0c;在模型中&#xff0c;工作、工 人、组织、对象被显示。 案例 在商业建模时&#xff0c;下列方面是模型要…...

C++标准模板(STL)- 低层内存管理 - 解分配函数 (operator delete, operator delete[])

低层内存管理 new 表达式是创建拥有动态存储期对象或对象数组的仅有方式&#xff0c;即它们拥有不受制于创建所它们在的作用域的生存期。 new 表达式通过调用分配函数获得存储。 delete 表达式销毁最终导出对象或通过 new 表达式创造的数组&#xff0c;然后调用解分配函数。默认…...

LeetCode 热题 HOT 100 (025/100)【宇宙最简单版】

【二叉树】No. 0124 二叉树中的最大路径和 【困难】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你…...

【mysql 第三篇章】一条 update语句是怎么持久化到磁盘上的?

首先看一下这个 SQL 语句你会不会写? 下面是说明执行这个 SQL 语句&#xff0c;数据库底层做了什么操作。 update users set namexxx where id10;在引擎要执行更新语句的时候&#xff0c;比如更新 id10 这行数据时&#xff0c;他会先查看数据在缓冲池中是否存在&#xff0c;如…...

深入探索大模型:从基础到实践,开启AI之旅

摘要&#xff1a; 在人工智能领域&#xff0c;大模型技术正成为推动创新和进步的关键力量。对于初学者而言&#xff0c;掌握大模型的基本概念、理论和技术是至关重要的。 本文将为你提供一个全面的学习路线&#xff0c;帮助你从基础知识出发&#xff0c;逐步深入到大模型的实践…...

题解:力扣1567 - 返回乘积为正数的最长子数组

问题描述 给定一个整数数组 nums&#xff0c;找出乘积为正数的最长子数组的长度。这里的子数组定义为连续元素的序列&#xff0c;乘积为正数指子数组中正数的个数必须大于负数的个数。 解题思路 为了解决这个问题&#xff0c;我们可以使用两个数组 f 和 g 分别表示以当前位置…...

009 | 上证50ETF基金数据分析及预测

项目背景 中国股市的发展历程坎坷,从最初的茫然到现在的逐步成熟,股市已经成为中国经济发展的重要标志之一。然而,当前中国股市仍存在投机行为过度和定价机制不完善等问题。为更好地理解和预测股市走势,本项目聚焦于上证50ETF基金的历史数据分析和未来走势预测。 项目目标…...

Wakanda: 1靶场复现【附代码】(权限提升)

靶机下载地址&#xff1a; wakanda: 1 ~ VulnHubwakanda: 1, made by xMagass. Download & walkthrough links are available.https://www.vulnhub.com/entry/wakanda-1,251/#download 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.7.0/24…...

内核函数调试

要进入 bind 函数的内部进行调试&#xff0c;实际上是不能直接在用户空间代码中进入内核内部的 bind 实现&#xff0c;因为 bind 是一个系统调用&#xff0c;它由内核处理。尽管如此&#xff0c;你可以通过以下几种方法来间接调试 bind 函数并理解它的行为&#xff1a; 1. 使用…...

Spring IOC使用DButil实现对数据库的操作

一、DButil、lombok、junit的简单介绍 1.dbutil dbutil是由阿帕奇提供操作数据库的插件&#xff0c;其核心类为QueryRunner&#xff0c;存在方法 .query() 查询&#xff0c;.update() 增删改&#xff1b; <!-- dbutil --> <dependency><groupId>commons-d…...

Android14音频进阶调试之命令播放mp3/aac非裸流音频(八十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更…...

vue中怎么自定义组件

目录 一&#xff1a;功能描述 二&#xff1a;实现过程 一&#xff1a;功能描述 在开发过程中我们经常需要自定义组件完成特定的功能&#xff0c;比如用户详情页&#xff0c;我增加一个调整余额的按钮&#xff0c;点击以后需要打开一个调整余额对话框&#xff0c;输入调整的金…...

BM1反转链表[栈+头插法]

题目要求如下: 问题比较简单,就是将链表中的值进行反转即可。 一种比较简单的方式是使用栈链表的方式来实现,下面是相应的代码: #include <stdio.h> #include <stdlib.h> int arr[10001] {0}; struct ListNode* ReverseList(struct ListNode* head ) {if (head …...

VisionPro二次开发学习笔记10-使用 PMAlign和Fixture固定Blob工具检测孔

使用 PMAlign和Fixture固定Blob工具检测孔 这个示例演示了如何使用 PMAlign 工具和 Fixture 工具来夹持一个 Blob 工具。示例代码将检测支架右上角孔的存在。当点击运行按钮时&#xff0c;将读取新图像。PMAlign 工具运行并生成一个 POSE 作为输出。POSE 是一个六自由度的变换…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...