metadata

package
v0.3.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package metadata 提供服务间调用的透传元数据机制。

设计目标:

  • MD 是纯 map,与传输层无关,可在 HTTP / gRPC / Cron 之间无缝传递
  • 键统一小写,与 HTTP/2 header 和 gRPC metadata 的规范一致
  • 预定义常用键,但不强制使用,业务可自由扩展

典型用法:

// 服务端(从传输层读取并注入 context)
ctx = metadata.NewContext(ctx, md)

// 业务代码(读取)
md := metadata.FromContext(ctx)
tenantID := md.Get(metadata.KeyTenantID)

// 客户端(从 context 写入传输层)
md := metadata.FromContext(ctx)
md.Inject(req.Header)   // HTTP
md.InjectGRPC(ctx)      // gRPC outgoing

Index

Constants

View Source
const (
	KeyTenantID  = "x-tenant-id"  // 租户 ID,多租户场景必传
	KeyCaller    = "x-caller"     // 调用方服务名,链路追踪辅助
	KeyEnv       = "x-env"        // 环境标(prod/staging/dev),灰度路由
	KeyRequestID = "x-request-id" // 请求 ID,与 requestid 中间件共享键名
	KeyUserID    = "x-user-id"    // 当前用户 ID,鉴权后透传
)

预定义的透传键,与 HTTP Header 名称一致(小写)。 业务可直接用字符串字面量扩展,不必局限于此。

Variables

This section is empty.

Functions

func NewContext

func NewContext(ctx context.Context, md MD) context.Context

NewContext 将 md 附加到 ctx 并返回新 ctx。 若 ctx 中已有 MD,新 MD 会与原有 MD 合并(新值覆盖旧值)。

Types

type MD

type MD map[string]string

MD 是服务间透传的元数据集合,键统一小写。 零值可直接使用。

func FromContext

func FromContext(ctx context.Context) MD

FromContext 从 ctx 中取出 MD;若不存在返回空 MD(非 nil,可直接读写)。

func New

func New() MD

New 创建空 MD。

func (MD) Clone

func (m MD) Clone() MD

Clone 返回当前 MD 的深拷贝。

func (MD) Del

func (m MD) Del(key string)

Del 删除键。

func (MD) Get

func (m MD) Get(key string) string

Get 返回键对应的值;键不存在时返回空字符串。

func (MD) Merge

func (m MD) Merge(other MD)

Merge 将 other 中的键值合并到 m,重复键以 other 为准。

func (MD) Set

func (m MD) Set(key, value string)

Set 设置键值对,键自动转小写。

Directories

Path Synopsis
Package propagation 提供 MD 在 HTTP / gRPC 传输层的注入与提取实现。
Package propagation 提供 MD 在 HTTP / gRPC 传输层的注入与提取实现。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL