gRPCurl Engineering at Fullstory
winget install --id=fullstorydev.grpcurl -e
grpcurl is a command-line tool that lets you interact with gRPC servers. It's basically curl for gRPC servers. The main purpose for this tool is to invoke RPC methods on a gRPC server from the command-line. gRPC servers use a binary encoding on the wire (protocol buffers, or "protobufs" for short). So they are basically impossible to interact with using regular curl (and older versions of curl that do not support HTTP/2 are of course non-starters). This program accepts messages using JSON encoding, which is much more friendly for both humans and scripts. With this tool you can also browse the schema for gRPC services, either by querying a server that supports server reflection, by reading proto source files, or by loading in compiled "protoset" files (files that contain encoded file descriptor protos). In fact, the way the tool transforms JSON request data into a binary encoded protobuf is using that very same schema. So, if the server you interact with does not support reflection, you will either need the proto source files that define the service or need protoset files that grpcurl can use.
grpcurl is a command-line tool designed to interact with gRPC servers, enabling users to invoke RPC methods directly from the terminal. It serves as a versatile alternative to curl for gRPC services, which rely on binary protocol buffer (protobuf) encoding.
Key Features:
- JSON Input Handling: Accepts JSON-formatted requests, simplifying interaction for humans and scripts without requiring knowledge of protobuf syntax.
- Service Schema Exploration: Browses gRPC service definitions via server reflection, proto source files, or protoset files, enabling schema-based request validation and transformation.
- Streaming Support: Handles unary, client-streaming, server-streaming, and bidirectional streaming RPC methods, including interactive usage in terminals.
- TLS Configuration: Supports secure communication with options for mutual TLS, custom certificate authorities, and plaintext connections.