- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
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/
我已经创建了嵌套模板,当我使用“net/http”和 http.HandelFunc 时它可以工作,但是,我决定继续使用“github.com/julienschmidt/httprouter”,因为
我来自 node express,我能够传递尽可能多的中间件,例如:routes.use('/*', ensureAuth, logImportant, ... n); 如何在使用 r.GET("/"
我正在使用路由器 ( httprouter ) 并希望从根目录提供静态文件。 css 文件在 static/style.css 在模板中 main.go router := httprouter.N
我正在使用 httprouter对于 API,我正在尝试弄清楚如何处理 404。它确实在 docs 中说404 可以手动处理,但我真的不知道如何编写自己的自定义处理程序。 我在其他路线之后尝试了以下.
我正在使用 https://github.com/julienschmidt/httprouter在我的 Go 项目中。 我刚才问了这个问题,@icza 解决了这个问题:httprouter conf
我有一个使用 get 方法提交数据的 html 表单。 Web Search Enter your tags(Comma separated)
我刚刚学会了如何使用 http路由器去打包并阅读许多关于它的文件,但是 当涉及到索引时,未能使用传递参数脚趾模板的 :name 样式 页面模板。 前任。 我的路由器代码: func getRo
Golang.org 有一篇关于如何做到这一点的博文: http://blog.golang.org/error-handling-and-go 他们基本上创造了一种新类型 type appHandl
我正在尝试从自签名证书创建 keystore 和信任库文件,用于部署在 JBoss ESB 中的 HTTPRouter 操作。我使用 openssl 检索感兴趣的证书并使用以下命令生成 keystor
我有以下 httprouter 处理程序,但我想自定义以便我可以注入(inject)我自己的记录器函数。 router := httprouter.New() router.Handle("GET",
我似乎不知道如何正确地一起使用中间件和 Http Router。 我的代码是: type appContext struct { db *mgo.Database } func main(){
我正在尝试为 httprouter 包实现类似 expressjs 的功能。我创建了一个结构 type mounter type Mounter struct { BasePath strin
对于一个可能很简单的问题,我深陷其中。我需要使用对第三方 CAS 身份验证服务的调用包装一个函数。我正在使用 go-cas 来执行此操作,并且在我开始添加路由要求之前一直有效。我选择了 Julien
我正在使用 httprouter去库实现一个REST API服务,我决定试试ServeFiles提供一些与我的 API 关联的模式文件。我注意到它使用了 Go 的便捷内置 net/http用于提供静态
我想使用 httprouter与 muxchain同时保留路由参数,例如 /:user/。 举个例子: func log(res http.ResponseWriter, req *http.Requ
我是 golang 的新手,使用 julienschmidt/httprouter 进行路由。 基于以下代码片段,能够发送一个参数。 但我对发送多个参数有点困惑,云任何人都可以帮助我。 package
我可以使用标准的 net/http 包获取 favicon.icon,但在使用 julienschmidt/httprouter 时遇到了问题。这就是我正在尝试的,并且收到 favicon.ico 文
我正在尝试创建一个 HTTPRouter 操作(在 esb 内),它将一些 XML 发送到外部 URL。该 URL 是安全的,但有一个自签名证书,我没有该证书的 keystore 。下面是我编写的用于
无法将 Prometheus 中间件传递到 httprouter 端点定义中。 我正在尝试将 Prometheus 中间件添加到我们的端点实现中。但是我们的端点正在使用名为 httprouter 的第
我很难理解如何一起使用 negroni 和 httprouter。 我有几个公共(public)路由,例如 /api/v1/ping 我有一堆需要身份验证中间件的私有(private)路由,例如/ap
我是一名优秀的程序员,十分优秀!