Documentation
¶
Overview ¶
Package middleware provides HTTP metadata propagation middleware. Implements MetadataCarrier interface for HTTP headers. Supports automatic extraction and injection across HTTP boundaries.
中间件包提供 HTTP 元数据传播中间件。 为 HTTP headers 实现 MetadataCarrier 接口。 支持跨 HTTP 边界的自动提取和注入。
Index ¶
- func ExtractFromGinContext(ctx *gin.Context) transportcontract.Metadata
- func GetFromContext(ctx context.Context) (transportcontract.Metadata, bool)
- func GetHeaderValue(ctx context.Context, key string) string
- func InjectToGinContext(ctx *gin.Context, md transportcontract.Metadata)
- func MetadataMiddleware(propagator transportcontract.MetadataPropagator) transportcontract.Middleware
- type HeaderCarrier
- type MetadataInjector
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ExtractFromGinContext ¶
func ExtractFromGinContext(ctx *gin.Context) transportcontract.Metadata
func GetFromContext ¶
func GetFromContext(ctx context.Context) (transportcontract.Metadata, bool)
func InjectToGinContext ¶
func InjectToGinContext(ctx *gin.Context, md transportcontract.Metadata)
func MetadataMiddleware ¶
func MetadataMiddleware(propagator transportcontract.MetadataPropagator) transportcontract.Middleware
MetadataMiddleware creates HTTP middleware for metadata extraction. Core logic: Extract metadata from request headers, inject into context.
MetadataMiddleware 创建 HTTP 中间件,用于提取元数据。 核心逻辑:从请求头提取元数据、注入到 context。
Types ¶
type HeaderCarrier ¶
type HeaderCarrier struct {
// contains filtered or unexported fields
}
HeaderCarrier wraps http.Header to implement MetadataCarrier interface. Core logic: Delegate Get/Set/Add operations to underlying http.Header.
HeaderCarrier 包装 http.Header,实现 MetadataCarrier 接口。 核心逻辑:将 Get/Set/Add 操作委托给底层 http.Header。
func NewHeaderCarrier ¶
func NewHeaderCarrier(h http.Header) *HeaderCarrier
NewHeaderCarrier creates a new HeaderCarrier with http.Header. Core logic: Wrap http.Header in carrier.
NewHeaderCarrier 创建新的 HeaderCarrier,携带 http.Header。 核心逻辑:将 http.Header 包装为 carrier。
func (*HeaderCarrier) Add ¶
func (c *HeaderCarrier) Add(key, value string)
func (*HeaderCarrier) Get ¶
func (c *HeaderCarrier) Get(key string) string
func (*HeaderCarrier) Keys ¶
func (c *HeaderCarrier) Keys() []string
func (*HeaderCarrier) Set ¶
func (c *HeaderCarrier) Set(key, value string)
func (*HeaderCarrier) Values ¶
func (c *HeaderCarrier) Values(key string) []string
type MetadataInjector ¶
type MetadataInjector struct {
// contains filtered or unexported fields
}
MetadataInjector injects metadata into HTTP requests. Core logic: Use propagator to inject metadata into request headers.
MetadataInjector 将元数据注入 HTTP 请求。 核心逻辑:使用 propagator 将元数据注入到请求头。
func NewMetadataInjector ¶
func NewMetadataInjector(propagator transportcontract.MetadataPropagator) *MetadataInjector
NewMetadataInjector creates a new metadata injector with propagator. Core logic: Store propagator for later injection.
NewMetadataInjector 创建新的元数据注入器,携带 propagator。 核心逻辑:存储 propagator 用于后续注入。
func (*MetadataInjector) Inject ¶
func (i *MetadataInjector) Inject(req *http.Request)
Inject injects metadata into HTTP request headers. Core logic: Create carrier from headers, call propagator.Inject.
Inject 将元数据注入 HTTP 请求头。 核心逻辑:从 headers 创建 carrier、调用 propagator.Inject。