Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Log Respons HTTP dalam Aplikasi Go Web Menggunakan Gorilla Mux dan Pengendali?
Melog Respons HTTP dengan Pakej Go and Gorilla's Mux and Handler
Dalam aplikasi Go, menggunakan pakej mux dan handler Gorilla untuk membina web aplikasi memberikan cabaran apabila cuba log respons HTTP. Walaupun permintaan pengelogan mudah dicapai dengan LoggingHandler Gorilla, respons pengelogan memerlukan pendekatan yang berbeza.
Satu penyelesaian yang berpotensi ialah mencipta fungsi perisian tengah tersuai yang membungkus pengendali asal. Perisian tengah ini boleh memintas kedua-dua permintaan dan respons, membenarkan pengelogan kedua-duanya seperti yang ditunjukkan dalam kod berikut:
func logResponse(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Capture the request requestBytes, err := httputil.DumpRequest(r, true) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } log.Printf("%q", requestBytes) // Create a new ResponseRecorder to capture the response rec := httptest.NewRecorder() next.ServeHTTP(rec, r) // Capture the response responseBytes := rec.Body.Bytes() log.Printf("%q", responseBytes) // Copy the recorder's headers and body into the original ResponseWriter for k, v := range rec.HeaderMap { w.Header()[k] = v } w.WriteHeader(rec.Code) w.Write(responseBytes) }) }
Perisian tengah ini kemudiannya boleh digunakan dengan membungkus pengendali asal dalam penghala Gorilla:
// Import Gorilla packages import ( "github.com/gorilla/mux" "github.com/gorilla/handlers" ) func main() { // Setup Gorilla router r := mux.NewRouter() // Wrap the handler with the logging middleware wrappedHandler := handlers.LoggingHandler(os.Stdout, http.HandlerFunc(handler)) // Register the handler with the router r.Handle("/api/v1/users", wrappedHandler) // Start the server http.ListenAndServe(":8080", r) }
Dengan menggunakan perisian tengah tersuai ini, kedua-dua permintaan dan respons HTTP boleh dilog dengan mudah, meningkatkan kebolehmerhatian aplikasi dan membantu dalam penyahpepijatan dan pemantauan prestasi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Log Respons HTTP dalam Aplikasi Go Web Menggunakan Gorilla Mux dan Pengendali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!