十二,<FastApi>中间件
什么是中间件?
"中间件"是一个函数,它在每个请求被特定的路径操作处理之前,以及在每个响应之后工作.
代码示例:
from fastapi import FastAPI, Response
from fastapi import Request
import uvicornapp = FastAPI()@app.middleware("http")
async def m2(request: Request, call_next):# 请求代码块print("m2 request")response = await call_next(request)# 响应代码块response.headers['author'] = 'yuan'print("m2 response")return response@app.middleware("http")
async def m1(request: Request, call_next):# 请求代码块print("m1 request")print('IP地址', request.client.host)# if request.client.host in ['127.0.0.1',]: #对请求做一个黑板名单的处理# print("##########IP限制")# return Response(status_code=400)print('user_path', request.url.path)if request.url.path in ["/user"]: # 权限处理print("##########USER限制")print(Response, type(Response))data = "visit forbidden"return Response(content=data)response = await call_next(request)# 响应代码块print("m1 response")return response@app.get("/user")
async def get_user():print("get user 函数执行")return {"test": "user"}@app.get("/item/{item_id}")
async def get_item(item_id: int):print("item 函数执行")return {"item_id": item_id}if __name__ == '__main__':# 启动uvicorn.run("07test:app", port=8080, reload=True)