1.1 KiB
1.1 KiB
httpx
Gin 服务的统一出入参收口。
响应
统一信封 {"code":0,"msg":"OK","data":...}:
OkJson(c, data)—— 成功出参ErrorJson(c, err)—— 错误出参;*CodeMsg携带的错误码透出(如 401),其余错误折叠为 code 1wsc.New(401, "未登录")构造带码错误
Handler 收口
// 泛型:Parse 取参 → 调 logic → 统一出参
httpx.Handle(c, func(req *CreateReq) (*CreateResp, error) { return svc.Create(req) })
httpx.HandleResult(c, data, err) // 非泛型场景
Parse 参数绑定
Parse(c, &req) 按固定顺序绑定:uri → query → header → json body,全部绑定后统一跑
binding tag 校验(bindingValidator,与 gin 同源 tag 名)。
注意事项:
- 包
init()会设置binding.Validator = nil(关闭 gin 内置校验,避免 query 阶段误报 json 字段的 required)。引入本包即全局生效,服务内不要绕过 Parse 自行 ShouldBind。 - 请求结构体可实现
Validate() error接口做自定义校验,在 binding 校验之前调用。 - body 解析用
json.NewDecoder直解,不触发 gin 内部校验。