Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Meluluskan Hujah Tambahan kepada Pengendali Gorilla Mux?

Bagaimana untuk Meluluskan Hujah Tambahan kepada Pengendali Gorilla Mux?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-13 09:15:02780semak imbas

How to Pass Additional Arguments to Gorilla Mux Handlers?

Menyampaikan Argumen kepada Pengendali Gorilla Mux

Dalam Gorilla Mux, pengendali biasanya didaftarkan menggunakan kaedah HandleFunc, yang mengambil fungsi yang menerima http.ResponseWriter dan *http.Request sebagai argumen.

Batasan Kaedah Standard

Walau bagaimanapun, apabila anda memerlukan argumen tambahan dalam pengendali anda, seperti objek pangkalan data, kaedah HandleFunc lalai mempunyai had. Ia hanya menerima dua hujah, menjadikannya mencabar untuk lulus parameter tambahan.

Penyelesaian Kemungkinan

Terdapat beberapa penyelesaian untuk mengatasi had ini:

  1. Pembolehubah Global:
    Sementara itu secara amnya tidak digalakkan dalam Go, boleh diterima untuk menggunakan pembolehubah global untuk objek pangkalan data. Ini menyediakan akses mudah kepada pangkalan data daripada mana-mana pengendali.
  2. Pengendali Berasaskan Struktur:
    Buat struct pengendali tersuai dan tentukan kaedah yang mengambil hujah yang diperlukan. Struktur itu kemudiannya boleh dibenamkan dalam fungsi pengendali.

    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")
  3. Fungsi Pembungkus:
    Balut pengendali sebenar dalam fungsi pembungkus yang menyediakan tambahan hujah.

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

Pilihan pendekatan bergantung pada anda keperluan dan keutamaan permohonan. Jika anda memilih untuk tidak mempunyai objek pangkalan data global atau memerlukan lebih daripada satu tika pangkalan data, kaedah berasaskan struct atau fungsi pembungkus memberikan lebih fleksibiliti.

Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Hujah Tambahan kepada Pengendali Gorilla Mux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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