跳转到内容

contract — API 快速参考

本页列出 github.com/spcent/plumego/contract 导出的每个公开符号。需要边界说明时请读 Contract Primer

import "github.com/spcent/plumego/contract"

func WriteResponse(w http.ResponseWriter, r *http.Request, status int, data any, meta any) error

写入 JSON 成功响应。data 放在 "data" 键;meta 非 nil 时放在 "meta" 键。自动注入 request_id

报文格式:

{
"data": { /* data */ },
"meta": { /* meta,nil 时省略 */ },
"request_id": "abc-123"
}
func WriteError(w http.ResponseWriter, r *http.Request, err *APIError) error

写入 JSON 错误响应。HTTP 状态码来自 err.Status


func NewErrorBuilder() *ErrorBuilder
方法签名作用
Type(et ErrorType) *ErrorBuilder从目录自动设置类型、code、HTTP 状态、category
Message(msg string) *ErrorBuilder覆盖人类可读错误消息
Detail(key, value string) *ErrorBuilderdetails map 添加键值对
Build() *APIError返回完成的 *APIError

常量HTTP 状态使用场景
TypeRequired400必填参数或字段缺失
TypeValidation400字段存在但未通过验证
TypeInvalidFormat400格式错误(UUID、email 等)
TypeInvalidJSON400请求体不是合法 JSON
TypeOutOfRange400值超出允许范围
TypeDuplicate400值已存在
TypeUnauthorized401请求未认证
TypeInvalidToken401Token 格式错误或签名无效
TypeExpiredToken401Token 已过期
TypeForbidden403已认证但无权限
TypeNotFound404资源不存在
TypeConflict409状态冲突(如并发更新)
TypeAlreadyExists409资源已存在
TypeGone410资源已永久删除
TypeRateLimited429超出速率限制
TypeInternal500服务端故障
TypeUnavailable503下游依赖不可用
TypeTimeout504上游调用超时

func RequestIDFromContext(ctx context.Context) string
func RequestContextFromContext(ctx context.Context) RequestContext
type RequestContext struct {
Params map[string]string
RoutePattern string
RouteName string
}