在 Python FastAPI 中记录原始 HTTP 请求/响应主体
在 Python FastAPI 中,您可以记录特定请求/响应的原始 JSON 主体通过使用中间件或自定义 APIRoute 类来路由。
选项 1:使用中间件
中间件允许您在端点处理请求和响应之前对其进行处理。创建中间件:
@app.middleware("http") async def middleware(request: Request, call_next): # ... return await call_next(request)
使用 request.body() 或 request.stream() 方法来使用请求正文。将正文存储在后台任务中以便稍后记录。
对于响应正文,请使用自定义代码读取并存储它:
res_body = b'' async for chunk in response.body_iterator: res_body += chunk
然后您可以在其中记录请求和响应正文BackgroundTask 以避免影响响应时间。
选项 2:使用自定义 APIRoute类
创建自定义 APIRoute 类来处理请求和响应正文:
class LoggingRoute(APIRoute): # ... async def custom_route_handler(request: Request) -> Response: # ... return response
在自定义路由处理程序中,使用与选项 1 类似的请求正文并处理响应正文通过使用此方法,您可以使用 限制日志记录到特定路由。 APIRouters。
注意事项
以上是如何在 Python FastAPI 中记录原始 HTTP 请求和响应正文?的详细内容。更多信息请关注PHP中文网其他相关文章!