response 定义统一 HTTP 响应结构与快捷构造方法;errs 定义业务异常类型,供 handler c.Error 登记、middleware.Recover 渲染。两者配套:正常路径手写 response.Ok,异常路径 c.Error(errs.New(...))。
关键导出
response.R[T any] struct{Code int; Msg string; Data T}response.Ok[T](data T) R[T]/OkVoid() R[any]/OkMsg(msg) R[any]/OkMsgData[T](msg, data) R[T]response.Fail(msg) R[any]/FailCode(code, msg) R[any]/Warn(msg) R[any]response.IsSuccess() / IsError()- 常量
CodeSuccess=200 / CodeFail=500 / CodeWarn=601等 errs.ServiceError struct{Code int; Msg string; Detail string}errs.New(code int, msg, detail string) *ServiceError(*ServiceError).Error() string返回Msg(Detail只进服务端日志,不回前端)
典型用法
go
// internal/auth/handler/auth_handler.go:66
c.JSON(http.StatusOK, response.Ok(vo))
c.JSON(http.StatusOK, response.Fail("没有权限访问用户数据!"))
// internal/system/service/dept_service.go:190
return errs.New(0, "部门停用,不允许新增", "")
// internal/auth/handler 鉴权失败
_ = c.Error(errs.New(0, i18n.Msg(c.Request.Context(), "auth.grant.type.error"), ""))坑/约定
WARNING
Data字段 不加omitempty,无数据时序列化为null而非省略。- HTTP 状态码恒
200,业务成败靠code字段区分——middleware/recover.go与oplog都按此判定,不要在 handler 里改http.StatusBadRequest。 errs.Code=0表示「未指定业务码」,middleware/recover.go回落到CodeFail(500);传非零Code时按response.FailCode渲染。 :::
相关页:/conventions/response、/conventions/error-handling、/pkg-reference/middleware。