首页 >后端开发 >Golang >如何将参数传递给 Gorilla Mux 处理程序?

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

Susan Sarandon
Susan Sarandon原创
2024-11-23 20:00:18841浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn