Skip to content

httperr 包

概览

httperr 让控制器以语义化错误表达 HTTP 失败,而无需直接操作响应写入器。

go
if user == nil {
    return httperr.NotFound("未找到用户")
}

为什么使用 httperr?

控制器关注业务结果,不必了解响应编码细节。httperr 将状态码、消息和可选原因封装为错误类型,ErrorReturnHandler 再将它转换为一致的 HTTP 响应。

常用帮助函数

  • httperr.BadRequest(message):400,请求无效。
  • httperr.Unauthorized(message):401,尚未认证。
  • httperr.NotFound(message):404,资源不存在。

使用示例

go
if err := validate(req); err != nil {
    return httperr.BadRequest("请求参数无效")
}
if !authorized(user) {
    return httperr.Unauthorized("需要登录")
}

错误流

返回值处理阶段优先识别 HTTPError;普通 error 则进入通用错误处理。管道的最终安全网负责处理执行过程中产生的错误,并避免重复写入响应。

扩展

可以创建新的语义状态码帮助函数,或为错误附带原因。保持错误作为返回值,能够让业务逻辑、测试和管道处理保持简单。