将参数传递给 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中文网其他相关文章!