将参数传递给 Gorilla Mux 处理程序
在 Gorilla Mux 中,处理程序通常使用 HandleFunc 方法注册,该方法接受一个接受http.ResponseWriter 和 *http.Request 作为
标准方法的限制
但是,当您在处理程序中需要其他参数(例如数据库对象)时,默认的 HandleFunc 方法就有限制。它只接受两个参数,因此很难传递其他参数。
可能的解决方案
有一些解决方法可以克服此限制:
基于结构的处理程序:
创建自定义处理程序结构并定义采用必要参数的方法。然后可以将该结构嵌入到处理函数中。
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")
包装函数:
将实际处理程序包装在提供附加功能的包装函数中
db := createDB() router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) { ShowUserHandler(w, r, db) }).Method("GET")
方法的选择取决于您的应用程序的要求和偏好。如果您不想拥有全局数据库对象或需要多个数据库实例,则基于结构体或包装函数的方法可提供更大的灵活性。
以上是如何将附加参数传递给 Gorilla Mux 处理程序?的详细内容。更多信息请关注PHP中文网其他相关文章!