赞
踩
什么是中间件呢?“中间件”是一个函数,它在每个请求被特定的路径操作处理之前,以及在每个响应返回之前工作。
1. 它接受你的应用程序的每一个请求
2. 它可以对这个请求做一些事情或者执行任何需要的代码
3. 它将请求传递给应用程序的其他部分(通过某种路径操作)
4. 它获取应用程序生产的响应(通过某种路径操作)
5. 它可以对响应做些什么或者执行任何需要的代码
6. 它返回这个响应
那么看下如何创建中间件?
要创建中间件你可以在函数的顶部使用装饰器@app.middleware("http")
1. request,不能省略
2. 一个函数 call_next,它将接收request作为参数
这个函数将request传递给响应的路径操作
然后它将返回由响应路径操作生成的response
3.然后你可以在返回response前进一步修改它
我们去实现一个中间件
- from fastapi import FastAPI, Request
- import time
-
- app = FastAPI()
-
- @app.middleware("http")
- async def add_process_time_header(request: Request, call_next):
- start_time = time.time()
- response = await call_next(request)
- process_time = time.time() - start_time
- response.headers["X-Process-Time"] = str(process_time)
- response.headers["mrli"] = "mrli"
- return response
-
-
- @app.get("/test_middleware")
- def test_middleware():
- return "this is test middleware"
-
-
-
- if __name__ == '__main__':
- import uvicorn
- uvicorn.run("main:app", reload=True, debug=True)

我们这样就实现了一个中间件,在response的前后在任何路径操作收到request前,可以添加要和请求一起运行的代码,也可以在响应生成但是返回之前添加代码。
请求下接口看下输出结果,正常返回我们自己定义的输出结果是没有问题的
我们再看下响应头返回的结果
可以看到,响应头信息中有我们自己定义的中间件处理的结果,到此一个简单的中间件就实现了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。