为了账号安全,请及时绑定邮箱和手机立即绑定

使用 julienschmidt httprouter 简化重复错误处理

使用 julienschmidt httprouter 简化重复错误处理

Go
慕桂英546537 2021-11-08 14:33:57
Golang.org 有一篇关于如何做到这一点的博文:http : //blog.golang.org/error-handling-and-go他们基本上制作了一种新类型type appHandler func(http.ResponseWriter, *http.Request) error它像这样实现了 http.Handler 接口func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {    if err := fn(w, r); err != nil {        http.Error(w, err.Error(), 500)    }}有了这个,你就可以在你的 handleFunc 上返回错误,这很棒。但我使用的是 julienschmidt httprouter,它使用一个函数而不是一个实现 http.Handler 的接口。我喜欢使用这个路由器,因为它支持命名参数。如何在 httprouter.Handler 函数周围包装“东西”,以便我可以返回错误并返回其他东西?有没有办法做到这一点,以防止重复的错误处理?我找不到办法。
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

使用闭包:


type Handle func(http.ResponseWriter, *http.Request, Params)


type ErrHandle func(http.ResponseWriter, *http.Request, Params) error


func (eh ErrHandle) ToHandle() Handle {

    return func(w http.ResponseWriter, r *http.Request, p Params) {

        if err := eh(w, r, p); err != nil {

            http.Error(w, err.Error(), 500)

        }

    }

}


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信