Metadata Type
metadata/metadata.go:13
Creating Metadata
metadata/metadata.go:16-26
Metadata Operations
Add
Add a value to a key (creates or appends):metadata/metadata.go:29-36
Get
Get the first value for a key:metadata/metadata.go:39-45
Set
Set a single value (replaces existing):metadata/metadata.go:48-53
Values
Get all values for a key:metadata/metadata.go:65-67
Range
Iterate over all metadata:metadata/metadata.go:56-62
Clone
Create a deep copy:metadata/metadata.go:70-76
Server Context
Extract metadata from incoming requests:metadata/metadata.go:81-83
Store Metadata
metadata/metadata.go:81-83
Client Context
Add metadata to outgoing requests:metadata/metadata.go:94-96
Append to Context
Add metadata to existing context:metadata/metadata.go:105-116
Merge Metadata
Merge new metadata into context:metadata/metadata.go:119-126
HTTP Integration
Metadata automatically maps to HTTP headers:Server Side
Client Side
gRPC Integration
Metadata maps to gRPC metadata:Server Side
Client Side
Common Use Cases
Request ID Propagation
User Authentication
Trace Context Propagation
Best Practices
Use Middleware
Use Middleware
Always use the metadata middleware for automatic header/metadata conversion.
Lowercase Keys
Lowercase Keys
Metadata keys are automatically lowercased. Use lowercase keys consistently.
Prefix Custom Keys
Prefix Custom Keys
Use prefixes like
x- for custom metadata keys to avoid conflicts.Don't Store Large Data
Don't Store Large Data
Metadata is meant for small pieces of data. Don’t store large payloads.
Propagate Selectively
Propagate Selectively
Only propagate metadata that’s needed downstream. Don’t blindly forward everything.
Validate Metadata
Validate Metadata
Always validate metadata values before using them, especially for security-sensitive data.
Complete Example
Related Components
HTTP Transport
HTTP header handling
gRPC Transport
gRPC metadata handling
Middleware
Metadata middleware
Transport
Transport headers