Bagaimanakah saya boleh menyampaikan hujah kepada pengendali Gorilla Mux?

Susan Sarandon
Lepaskan: 2024-11-23 20:00:18
asal
748 orang telah melayarinya

How can I pass arguments to Gorilla Mux handlers?

Menyampaikan Argumen kepada Pengendali Gorilla Mux

Dalam konteks Gorilla Mux, tidak mungkin untuk menyampaikan hujah kepada pengendali menggunakan kaedah HandleFunc . Walau bagaimanapun, terdapat beberapa pendekatan untuk mencapai hasil yang serupa.

Satu pilihan, yang dinyatakan dalam jawapan yang disediakan, adalah untuk mencipta fungsi pembungkus. Ini melibatkan penciptaan fungsi yang mengambil argumen tambahan yang anda ingin sampaikan kepada pengendali dan kemudian memanggil pengendali sebenar dengan argumen tersebut. Contohnya:

db := createDB()
router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) {
    showUserHandler(w, r, db)
}).Method("GET")
Salin selepas log masuk

Pendekatan ini membolehkan anda menghantar objek pangkalan data ke fungsi showUserHandler sebagai hujah ketiga.

Pilihan lain ialah menggunakan struct untuk merangkum kedua-dua pengendali dan hujah tambahan. Ini membolehkan anda menentukan berbilang pengendali yang beroperasi pada data yang sama tanpa perlu mengulangi kod untuk memulakan data. Contohnya:

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")
Salin selepas log masuk

Dengan mentakrifkan pengendali pada struct, anda boleh melampirkan keadaan tambahan pada pengendali tanpa mengubah suai fungsi pengendali asas.

Walaupun boleh diterima untuk menggunakan pembolehubah global dalam beberapa kes, penyelesaian ini menyediakan penyelesaian alternatif jika anda lebih suka mengelakkannya.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menyampaikan hujah kepada pengendali Gorilla Mux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan