gRPC
Request Metadata
RequestParseValidateEasy
What you will learn
- Metadata (headers) can be sent at start AND as trailers โ trailers arrive AFTER the last message, used for rich error context
- Binary metadata keys end in -bin (ASCII is raw) โ sending binary as ASCII corrupts the wire format
- Never put secrets in uppercase metadata keys โ gRPC normalises to lowercase server-side, which can break signature verification
Description
Send custom headers/metadata with your gRPC request (e.g., authorization).
Test Scenario
// grpcurl with metadata
grpcurl -plaintext \
-H 'authorization: Bearer token123' \
-H 'x-request-id: req-456' \
-d '{"id": "user-1"}' \
localhost:50051 \
practice.users.UserService/GetUser
// Server receives metadata in contextTesting Tips
- โขMetadata is similar to HTTP headers
- โขUse -H flag in grpcurl
- โขCommon metadata: authorization, x-request-id
// Playwright API Testing - gRPC (via REST gateway)import { test, expect } from '@playwright/test';test('gRPC unary call via gateway', async ({ request }) => {const response = await request.post('/api/grpc/UserService/GetUser', {data: { id: '1' }});expect(response.ok()).toBeTruthy();const data = await response.json();expect(data.user).toBeDefined();});
Challenge ID: grpc-request-metadata
2 frameworks available