Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menghantar Data daripada Middleware kepada Pengendali di Golang?

Bagaimanakah Saya Boleh Menghantar Data daripada Middleware kepada Pengendali di Golang?

DDD
DDDasal
2024-11-10 09:50:02645semak imbas

How Can I Pass Data from Middleware to Handlers in Golang?

Menyalurkan Data daripada Middleware kepada Pengendali

Dalam reka bentuk anda, anda mempunyai middleware yang memproses permintaan masuk dan pengendali yang mengembalikan http.Handler . Anda ingin menghantar data daripada perisian tengah kepada pengendali, khususnya token web JSON yang dihuraikan daripada badan permintaan.

Untuk mencapai ini, anda boleh menggunakan pakej konteks Gorilla:

import (
    "github.com/gorilla/context"
)

func Middleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // Middleware operations
        // Parse body/get token.
        context.Set(r, "token", token)

        next.ServeHTTP(w, r)
    })
}

func Handler() http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        token := context.Get(r, "token")
    })
}

Dalam middleware, anda menghuraikan badan permintaan dan menyimpan JWT dalam konteks permintaan. Kemudian, dalam pengendali, anda boleh mendapatkan semula JWT daripada konteks:

token := context.Get(r, "token")

Ini membolehkan anda mengelakkan menghuraikan JWT sekali lagi dalam pengendali anda, yang lebih cekap.

Kemas kini:

Pakej konteks Gorilla sedang dalam mod penyelenggaraan.

func Middleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // Middleware operations
        // Parse body/get token.
        ctx := context.WithValue(r.Context(), "token", token)

        next.ServeHTTP(w, r.WithContext(ctx))
    })
}

func Handler() http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        token := r.Context().Value("token")
    })
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghantar Data daripada Middleware kepada Pengendali di Golang?. 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