Skip to main content

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):

  1. 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
  2. Inspect the Echo method's schema:
    • Input EchoRequest { message: string, count: int32 }
    • Output EchoResponse { message: string, seq: int64, metadataJson: string }
  3. Invoke Echo with {"message":"hello-grpc","count":3}:
    • Unary: one {message:"hello-grpc", seq, metadataJson} response, status OK
    • Server-streaming EchoStream with the same input: 3 frames stream#1/#2/#3

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: map fields appear as nested mapEntry; indirectly referenced types are also pulled in.

Related: environment Pre-URLs and TLS configuration in concepts.