Bagaimana untuk Menangkap dan Merakam Badan Respons dalam Gin Middleware?

Mary-Kate Olsen
Lepaskan: 2024-11-12 01:44:01
asal
224 orang telah melayarinya

How to Capture and Log Response Body in Gin Middleware?

Log Response Body dalam Gin Middleware

Dalam middleware, anda mungkin perlu menangkap dan log badan respons untuk tujuan penyahpepijatan atau pengauditan. Jadi, bagaimanakah kita boleh mengakses badan tindak balas daripada konteks perisian tengah dalam Gin?

Gin menguruskan penulisan respons secara dalaman, menjadikannya sukar untuk mendapatkan badan secara langsung. Untuk mengatasinya, kita perlu melaksanakan Penulis kita sendiri yang memintas operasi tulis. Berikut ialah pendekatan langkah demi langkah:

  1. Buat Penulis Tersuai:
type bodyLogWriter struct {
    gin.ResponseWriter
    body *bytes.Buffer
}

func (w bodyLogWriter) Write(b []byte) (int, error) {
    w.body.Write(b)
    return w.ResponseWriter.Write(b)
}
Salin selepas log masuk

Penulis ini menampan badan respons di samping menulisnya kepada penulis asal.

  1. Melaksanakan Middleware:
func ginBodyLogMiddleware(c *gin.Context) {
    blw := &bodyLogWriter{body: bytes.NewBufferString(""), ResponseWriter: c.Writer}
    c.Writer = blw
    c.Next()

     statusCode := c.Writer.Status()
    if statusCode >= 400 {
        fmt.Println("Response body: " + blw.body.String())
    }
}
Salin selepas log masuk

Dalam middleware, kami menugaskan penulis tersuai kami blw kepada konteks, memastikan semua respons akan ditangkap olehnya. Kemudian, kami log kandungan jika kod status adalah ralat.

  1. Gunakan Middleware:
router.Use(ginBodyLogMiddleware)
Salin selepas log masuk

Sekarang, apabila permintaan dibuat dikendalikan oleh penghala Gin anda, perisian tengah akan memintas dan mencatat badan tindak balas untuk permintaan dengan kod status ralat.

Perhatikan bahawa pendekatan ini tidak akan log badan tindak balas untuk fail statik, tetapi ia harus menangani kes penggunaan untuk kebanyakan kandungan dinamik. Jika anda perlu memintas semua fail, anda memerlukan pembalut yang lebih kompleks di sekeliling enjin Gin.

Atas ialah kandungan terperinci Bagaimana untuk Menangkap dan Merakam Badan Respons dalam Gin Middleware?. 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