gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:43:59 26 4
gpt4 key购买 nike

Golang.org 有一篇关于如何做到这一点的博文: http://blog.golang.org/error-handling-and-go

他们基本上创造了一种新类型

type appHandler func(http.ResponseWriter, *http.Request) error

像这样实现了http.Handler接口(interface)

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 的接口(interface)。我喜欢使用这个路由器,因为它支持命名参数。

我如何在 httprouter.Handler 函数周围包装“东西”,以便我可以返回错误并同时返回其他东西?

有没有一种方法可以防止重复的错误处理?我找不到办法。

最佳答案

使用闭包:

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)
}
}
}

关于go - 使用 julienschmidt httprouter 简化重复错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32485021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com