gRPC (Developer View)
gRPC is binary RPC. This tool doesn't require you to prepare a .proto file — as long as the server enables Server Reflection, the client discovers services and methods automatically, then inspects fields and invokes them on demand.
Core Flow
How to Use in the UI (Three Steps)
Using the sample service qrtest.v1.EchoService (grpc://127.0.0.1:18089, plaintext h2c):
- Connect the gRPC request (url stores
host:port). Reflection runs automatically and yields the method tree:/qrtest.v1.EchoService/Echo— unary/qrtest.v1.EchoService/EchoStream— server-streaming/qrtest.v1.EchoService/Collect— client-streaming/qrtest.v1.EchoService/Chat— bidirectional streaming
- Inspect the
Echomethod's schema:- Input
EchoRequest { message: string, count: int32 } - Output
EchoResponse { message: string, seq: int64, metadataJson: string }
- Input
- Invoke
Echowith{"message":"hello-grpc","count":3}:- Unary: one
{message:"hello-grpc", seq, metadataJson}response, statusOK - Server-streaming
EchoStreamwith the same input: 3 framesstream#1/#2/#3
- Unary: one
Metadata (gRPC Headers)
Auth/tracing headers are passed as metadata with lowercased keys; reserved headers like grpc-* and content-type are filtered out.
TLS / mTLS
Use a grpcs:// Pre-URL and import client certificates in settings.
Gotchas (Important)
- A non-OK status is a normal business result, not a connection failure: timeouts and business errors come back as a status code with a possibly empty response — don't treat them as transport errors. Only HTTP 4xx indicates an actual error.
- The tool supports unary and server-streaming only; client-streaming / bidirectional streaming cannot be invoked yet (for full streaming inside the app, the UI is authoritative).
- Complex types:
mapfields appear as nestedmapEntry; indirectly referenced types are also pulled in.
Related: environment Pre-URLs and TLS configuration in concepts.