首页 > 后端开发 > Golang > 正文

如何将附加参数传递给 Gorilla Mux 处理程序?

Mary-Kate Olsen
发布: 2024-11-13 09:15:02
原创
775 人浏览过

How to Pass Additional Arguments to Gorilla Mux Handlers?

将参数传递给 Gorilla Mux 处理程序

在 Gorilla Mux 中,处理程序通常使用 HandleFunc 方法注册,该方法接受一个接受http.ResponseWriter 和 *http.Request 作为

标准方法的限制

但是,当您在处理程序中需要其他参数(例如数据库对象)时,默认的 HandleFunc 方法就有限制。它只接受两个参数,因此很难传递其他参数。

可能的解决方案

有一些解决方法可以克服此限制:

  1. 全局变量:
    虽然在 Go 中通常不鼓励这样做,对数据库对象使用全局变量是可以接受的。这样可以从任何处理程序轻松访问数据库。
  2. 基于结构的处理程序:
    创建自定义处理程序结构并定义采用必要参数的方法。然后可以将该结构嵌入到处理函数中。

    type Users struct {
        db *gorm.DB
    }
    
    func (users *Users) ShowUserHandler(w http.ResponseWriter, r *http.Request) {
        // Access to the database object through users.db
    }
    
    // Register the handler
    router.HandleFunc("/users/{id}", users.ShowUserHandler).Methods("GET")
    登录后复制
  3. 包装函数:
    将实际处理程序包装在提供附加功能的包装函数中

    db := createDB()
    router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) {
        ShowUserHandler(w, r, db)
    }).Method("GET")
    登录后复制

方法的选择取决于您的应用程序的要求和偏好。如果您不想拥有全局数据库对象或需要多个数据库实例,则基于结构体或包装函数的方法可提供更大的灵活性。

以上是如何将附加参数传递给 Gorilla Mux 处理程序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板