Melog Badan Permintaan/Respons HTTP Mentah dalam Python FastAPI
Dalam Python FastAPI, anda boleh log badan JSON mentah permintaan/tindak balas tertentu laluan dengan menggunakan middleware atau kelas APIRoute tersuai.
Pilihan 1: Menggunakan Middleware
Middleware membenarkan anda mengendalikan permintaan dan respons sebelum ia diproses oleh titik akhir. Untuk mencipta middleware:
@app.middleware("http") async def middleware(request: Request, call_next): # ... return await call_next(request)
Gunakan kaedah request.body() atau request.stream() untuk menggunakan badan permintaan. Simpan badan dalam BackgroundTask untuk pengelogan kemudian.
Untuk badan respons, gunakan kod tersuai untuk membaca dan menyimpannya:
res_body = b'' async for chunk in response.body_iterator: res_body += chunk
Anda kemudian boleh log kedua-dua badan permintaan dan respons dalam BackgroundTask untuk mengelakkan kesan masa tindak balas.
Pilihan 2: Menggunakan Laluan API Tersuai Kelas
Buat kelas APIRoute tersuai untuk mengendalikan badan permintaan dan tindak balas:
class LoggingRoute(APIRoute): # ... async def custom_route_handler(request: Request) -> Response: # ... return response
Dalam pengendali laluan tersuai, gunakan badan permintaan dan kendalikan badan tindak balas sama seperti Pilihan 1 . Dengan menggunakan pendekatan ini, anda boleh mengehadkan pengelogan kepada laluan tertentu yang menggunakan APIRouters.
Pertimbangan
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Log Permintaan HTTP Mentah dan Badan Respons dalam Python FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!