Documentation
¶
Overview ¶
Package propagation 提供 MD 在 HTTP / gRPC 传输层的注入与提取实现。
仅透传以 "x-" 开头的 header/metadata key,避免将 Content-Type、 Authorization 等控制头意外带入业务透传链路。
Index ¶
- func GRPCClientInject(ctx context.Context) context.Context
- func GRPCClientStreamInterceptor(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, ...) (grpc.ClientStream, error)
- func GRPCClientUnaryInterceptor(ctx context.Context, method string, req, reply any, cc *grpc.ClientConn, ...) error
- func GRPCExtract(ctx context.Context) metadata.MD
- func GRPCServerStreamInterceptor(srv any, ss grpc.ServerStream, _ *grpc.StreamServerInfo, ...) error
- func GRPCServerUnaryInterceptor(ctx context.Context, req any, _ *grpc.UnaryServerInfo, ...) (any, error)
- func HTTPClientInject(ctx context.Context, r *http.Request)
- func HTTPExtract(r *http.Request) metadata.MD
- func HTTPInject(md metadata.MD, h http.Header)
- func HTTPServerMiddleware(next http.Handler) http.Handler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GRPCClientInject ¶
GRPCClientInject 从 ctx 中取出 MD,将 x-* 键追加到 gRPC outgoing metadata, 用于 gRPC 客户端发出请求时透传。
使用方式:
ctx = propagation.GRPCClientInject(ctx) resp, err := client.MyMethod(ctx, req)
func GRPCClientStreamInterceptor ¶
func GRPCClientStreamInterceptor(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error)
GRPCClientStreamInterceptor 自动将 context 中的 MD 注入到每次 gRPC stream 的 outgoing metadata。
func GRPCClientUnaryInterceptor ¶
func GRPCClientUnaryInterceptor(ctx context.Context, method string, req, reply any, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error
GRPCClientUnaryInterceptor 自动将 context 中的 MD 注入到每次 gRPC 调用的 outgoing metadata。 注册到 grpc.Dial 的 WithChainUnaryInterceptor 即可无感透传。
func GRPCExtract ¶
GRPCExtract 从 gRPC incoming metadata 中提取所有 x-* 键并返回 MD。
func GRPCServerStreamInterceptor ¶
func GRPCServerStreamInterceptor(srv any, ss grpc.ServerStream, _ *grpc.StreamServerInfo, handler grpc.StreamHandler) error
GRPCServerStreamInterceptor 从入站 gRPC metadata 提取 MD 并注入 context。
func GRPCServerUnaryInterceptor ¶
func GRPCServerUnaryInterceptor(ctx context.Context, req any, _ *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (any, error)
GRPCServerUnaryInterceptor 从入站 gRPC metadata 提取 MD 并注入 context。
func HTTPClientInject ¶
HTTPClientInject 从 ctx 中取出 MD,将 x-* 键注入到 HTTP Request Header, 用于 HTTP 客户端发出请求时透传。
func HTTPExtract ¶
HTTPExtract 从 HTTP Request Header 中提取所有 x-* 键并返回 MD。
func HTTPInject ¶
HTTPInject 将 MD 中所有 x-* 键写入 HTTP Header(规范化为 Header-Case)。
Types ¶
This section is empty.