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

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

Susan Sarandon
发布: 2024-11-23 20:00:18
原创
748 人浏览过

How can I pass arguments to Gorilla Mux handlers?

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

在 Gorilla Mux 的上下文中,不可能使用 HandleFunc 方法直接将参数传递给处理程序。但是,有多种方法可以实现类似的结果。

提供的答案中提到的一个选项是创建一个包装函数。这涉及创建一个函数,该函数接受您想要传递给处理程序的附加参数,然后使用这些参数调用实际的处理程序。例如:

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

这种方法允许您将数据库对象作为第三个参数传递给 showUserHandler 函数。

另一种选择是使用结构体来封装处理程序和附加参数。这允许您定义对相同数据进行操作的多个处理程序,而无需重复用于初始化数据的代码。例如:

type Users struct {
    db *gorm.DB
}

func (users *Users) showHandler(w http.ResponseWriter, r *http.Request) {
    // Access the database object through users.db
}

// Setup
users := &Users{db: createDB()}
router.HandleFunc("/users/{id}", users.showHandler).Method("GET")
登录后复制

通过在结构体上定义处理程序,您可以将附加状态附加到处理程序,而无需修改底层处理程序函数。

虽然在某些情况下使用全局变量是可以接受的在这种情况下,如果您想避免的话,这些解决方法可以提供替代解决方案。

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

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