Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyalurkan Hujah dengan Berkesan kepada Pengendali Penghala Gin?
Apabila membina API RESTful dengan Gin, menghantar hujah kepada pengendali penghala menjadi penting, terutamanya untuk berkongsi perkara biasa sumber seperti sambungan pangkalan data. Walaupun menyimpan hujah dalam pembolehubah global mungkin kelihatan mudah, terdapat pilihan yang lebih baik tersedia.
Kaedah pilihan menggunakan penutupan untuk lulus kebergantungan secara eksplisit. Dengan merangkum kod pengendali dalam penutupan, anda boleh mengembalikan fungsi yang memenuhi antara muka HandlerFunc Gin.
// SomeHandler returns a gin.HandlerFunc to satisfy Gin's router methods. func SomeHandler(db *sql.DB) gin.HandlerFunc { fn := func(c *gin.Context) { // Handler code goes here. For example: rows, err := db.Query(...) c.String(200, results) } return gin.HandlerFunc(fn) } func main() { db, err := sql.Open(...) // Handle error router := gin.Default() router.GET("/test", SomeHandler(db)) router.Run(":8080") }
Pendekatan ini membolehkan anda menghantar sambungan pangkalan data secara eksplisit kepada fungsi pengendali sambil mengekalkan pengasingan kebimbangan.
Walaupun pembolehubah global mungkin kelihatan menarik untuk projek kecil, biasanya tidak digalakkan. Ia boleh membawa kepada kod berganding rapat dan menjadikannya lebih sukar untuk mengekalkan dan menguji aplikasi anda. Jika anda memilih untuk menggunakan pembolehubah global, pastikan ia merangkum kebergantungan dengan cara yang jelas dan tersusun dengan baik.
Go tidak menyokong argumen fungsi pilihan secara asli. Walau bagaimanapun, anda boleh menggunakan teknik pengaturcaraan berfungsi, seperti mengembalikan fungsi daripada fungsi, untuk mencapai kefungsian yang serupa. Pendekatan ini boleh memberikan fleksibiliti dan penggunaan semula kod.
Atas ialah kandungan terperinci Bagaimana untuk Menyalurkan Hujah dengan Berkesan kepada Pengendali Penghala Gin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!