Melog Data Respons HTTP untuk Pengelogan Komprehensif
Cabaran biasa dalam pengelogan ialah menangkap kedua-dua data permintaan dan respons dalam satu log. Secara lalai, kandungan strim http.ResponseWriter tidak boleh diakses, menjadikannya sukar untuk mengekstrak respons untuk tujuan pembalakan. Walau bagaimanapun, terdapat cara untuk mencapai keupayaan ini.
Satu pendekatan ialah menggunakan utiliti io.MultiWriter. Dengan mencipta penulis yang menduplikasi tulisannya ke beberapa destinasi, kami boleh log respons dan menghantarnya kepada pelanggan secara serentak:
<code class="go">func api1(w http.ResponseWriter, req *http.Request) { var log bytes.Buffer rsp := io.MultiWriter(w, &log) // Perform operations and write to 'rsp' // Now, 'log' contains a duplicate of the response data sent to the client. }</code>
Pilihan lain ialah menggunakan io.TeeReader untuk mencipta pembaca yang menulis kepada penulis tertentu. Ini membolehkan kami membuat salinan strim req.Body dan merekodkannya dalam penimbal log:
<code class="go">func api1(w http.ResponseWriter, req *http.Request) { var log bytes.Buffer tee := io.TeeReader(req.Body, &log) // Perform operations using tee as the 'body' // Now, 'log' contains a copy of the request body data. }</code>
Teknik ini membolehkan anda menangkap kedua-dua data permintaan dan tindak balas dalam log anda, memberikan pandangan menyeluruh tentang aktiviti API anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Log Kedua-dua Data Permintaan dan Respons dalam API HTTP Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!