Apabila membina API RESTful dalam Go menggunakan Gin, anda mungkin menghadapi senario di mana anda perlu menyampaikan hujah kepada pengendali laluan. Artikel ini akan meneroka cara untuk mencapai matlamat ini dan menilai kesesuaiannya untuk situasi yang berbeza.
Satu pendekatan ialah menggunakan pembolehubah global untuk menyimpan kebergantungan yang dikongsi merentas semua laluan, seperti kumpulan sambungan pangkalan data. Walau bagaimanapun, ini biasanya tidak disyorkan kerana ia boleh menyebabkan gandingan yang ketat dan kod yang sukar untuk dikekalkan.
Sebagai alternatif, anda boleh menggunakan penutupan untuk mencipta fungsi pengendali yang menerima hujah tambahan. Pendekatan ini memastikan kod anda dipisahkan dan membolehkan lebih banyak fleksibiliti dalam menghantar kebergantungan.
Sebagai contoh, pertimbangkan fungsi pengendali yang memerlukan objek pangkalan data sebagai hujah:
import "github.com/gin-gonic/gin" import "database/sql" func SomeHandler(db *sql.DB) gin.HandlerFunc { return func(c *gin.Context) { // Your handler code goes here } }
Dalam contoh ini, SomeHandler mengembalikan gin.HandlerFunc yang memenuhi kaedah penghala Gin. Fungsi yang dikembalikan kemudiannya boleh didaftarkan dengan penghala seperti berikut:
db, err := sql.Open(...) // handle the error router := gin.Default() router.GET("/test", SomeHandler(db))
Dengan menggunakan penutupan, anda boleh melepasi kebergantungan secara eksplisit sambil mengekalkan pengasingan kebimbangan dan mengelakkan keadaan global. Argumen pilihan tidak disokong secara langsung dalam Go, tetapi penutupan menawarkan penyelesaian yang fleksibel untuk mencapai kesan yang serupa.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyalurkan Hujah kepada Pengendali Penghala Gin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!