Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menghantar Data daripada Middleware kepada Pengendali di 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!