Python FastAPI系列:自定义FastAPI middleware中间件
from fastapi import FastAPI
from starlette.requests import Request
from starlette.responses import JSONResponse
app = FastAPI()
# 自定义中间件,记录请求信息
@app.middleware("http")
async def custom_process_request(request: Request, call_next):
print(f"Request received: {request.method} {request.url}")
# 在调用下一个中间件之前可以进行额外的处理
response = await call_next(request)
# 在返回响应之前可以进行额外的处理
print(f"Response sent: {response.status_code}")
return response
@app.get("/")
async def root():
return JSONResponse({"message": "Hello World"})
# 运行应用程序
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
这段代码定义了一个FastAPI应用程序,并使用@app.middleware("http")
装饰器添加了一个自定义的HTTP中间件。在请求到达并被处理之前和响应准备发送时,会打印出相应的日志信息。这个例子展示了如何在FastAPI中使用中间件来进行请求和响应的拦截和相应的处理。
评论已关闭