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

在Web请求之前执行功能

在Web请求之前执行功能

Go
哈士奇WWW 2021-05-07 14:39:42
我试图在每个 Web 请求之前执行一个函数。我有一个简单的Web服务器:func h1(w http.ResponseWriter, r *http.Request) {  fmt.Pprintf("handler: %s\n", "h1")}func h2(w http.ResponseWriter, r *http.Request) {  fmt.Pprintf("handler: %s\n", "h2")}    func h3(w http.ResponseWriter, r *http.Request) {  fmt.Pprintf("handler: %s\n", "h3")}    func main() {  http.HandleFunc("/", h1)  http.HandleFunc("/foo", h2)  http.HandleFunc("/bar", h3)  /*    Register a function which is executed before the handlers,    no matter what URL is called.  */  http.ListenAndServe(":8080", nil)}问题:有没有简单的方法可以做到这一点?
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

包装每个HandlerFuncs。


func WrapHandler(f HandlerFunc) HandlerFunc {

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

    // call any pre handler functions here

    mySpecialFunc()

    f(w, r)

  }

}


http.HandleFunc("/", WrapHandler(h1))

由于Function是Go中的一等值,因此可以轻松地包装,咖喱它们或其他您可能要使用它们做的事情。


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

添加回答

举报

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