当前位置: 首页 > wzjs >正文

企业网网站怎么做系统搭建方案

企业网网站怎么做,系统搭建方案,godaddy wordpress主机,wordpress修改版权 违法中间件是一个函数,它在请求特定路径操作之前,以及在每个响应之后执行。 使用装饰器创建中间件 创建一个函数,在函数的顶部使用装饰器 app.middleware("http"). 函数参数如下: request: Request call_next 函数&#…

中间件是一个函数,它在请求特定路径操作之前,以及在每个响应之后执行。

使用装饰器创建中间件

创建一个函数,在函数的顶部使用装饰器 @app.middleware("http").

函数参数如下:

  • request: Request

  • call_next 函数:这个函数将接收 request 作为参数,将 request 传递给相应的 路径操作,然后它将返回由相应的路径操作生成的 response.

import uvicorn
from fastapi import FastAPI, Requestapp = FastAPI()@app.middleware("http")
async def m2(request: Request, call_next):"""第二个中间件"""print("第二个中间件 m2 ...request")response = await call_next(request)print("第二个中间件 m2 ...response")return response@app.middleware("http")
async def m1(request: Request, call_next):"""第一个中间件"""print("第一个中间件 m1 ...request")response = await call_next(request)print("第一个中间件 m1 ...response")return response@app.get("/item/{item_id}")
async def item(item_id: int):print("请求get item id", item_id)return {"item_id": item_id}if __name__ == '__main__':uvicorn.run(app)

运行结果:

第一个中间件 m1 ...request
第二个中间件 m2 ...request
请求get item id 11111
第二个中间件 m2 ...response
第一个中间件 m1 ...response
INFO:     127.0.0.1:58664 - "GET /item/11111 HTTP/1.1" 200 OK

继承BaseHTTPMiddleware

1、定义中间件类:首先,你需要定义一个类,并继承自 starlette.middleware.base.BaseHTTPMiddleware。

2、实现 dispatch 方法:在你的类中,你需要实现 dispatch 方法。这个方法会在请求被传递给下一个中间件或最终的应用程序之前被调用。

3、注册你的中间件:在你的 FastAPI 应用中注册你的中间件。

创建my_middlewares包

示例:计算API接口调用耗时 中间件

创建CalculateTimeMiddleware.py 文件

import timefrom fastapi import Request, FastAPI
from starlette.middleware.base import BaseHTTPMiddlewareclass CalculateTimeMiddleware(BaseHTTPMiddleware):"""计算API接口耗时 单位: 秒"""async def dispatch(self, request: Request, call_next):print("中间件: 计算API接口耗时...")start_time = time.perf_counter()response = await call_next(request)process_time = time.perf_counter() - start_timeprint(f"请求路径: {request.url.path}, 耗时: {process_time} 秒")return response

编写Main.py 文件

import uvicorn
from fastapi import FastAPI
from starlette.requests import Requestfrom my_middlewares.AuthMiddleware import AuthMiddleware
from my_middlewares.CalculateTimeMiddleware import CalculateTimeMiddlewareapp = FastAPI()# 注册中间件
app.add_middleware(AuthMiddleware)  # type: ignore
app.add_middleware(CalculateTimeMiddleware) # type: ignore@app.get("/item/{item_id}")
async def item(item_id: int, request: Request):# 获取上下文变量user_id = request.state.user_idprint("user_id:", user_id)return {"item_id": item_id}if __name__ == '__main__':uvicorn.run(app)

示例:中间件传递参数

使用上下文变量(Context Variables),FastAPI的Request对象允许你设置和获取上下文变量,这在多个中间件或路由处理器之间共享数据非常有用。

编写AuthMiddleware.py文件

from starlette.middleware.base import BaseHTTPMiddlewareclass AuthMiddleware(BaseHTTPMiddleware):"""权限校验,并传递 user_id"""async def dispatch(self, request, call_next):print("中间件: 传递 user_id ...")user_id="user001"# 设置上下文变量 将user_id存储在request.state中request.state.user_id = user_idresponse = await call_next(request)return response

运行结果:

中间件: 计算API接口耗时...
中间件: 传递 user_id ...
user_id: user001
请求路径: /item/111, 耗时: 0.0006680000005871989 秒


文章转载自:

http://ew1dTRbp.rbkmL.cn
http://ajJOX6ZX.rbkmL.cn
http://94403zzR.rbkmL.cn
http://mwvqqpBi.rbkmL.cn
http://S8VZg7Qk.rbkmL.cn
http://iAI7ltiT.rbkmL.cn
http://WtIrjoBp.rbkmL.cn
http://wWJsh7Jj.rbkmL.cn
http://UGtuz9f3.rbkmL.cn
http://RDmA8zLY.rbkmL.cn
http://7UctMUjw.rbkmL.cn
http://jh3bNMne.rbkmL.cn
http://SvdcRtw7.rbkmL.cn
http://xl8l7tbu.rbkmL.cn
http://dluvPTYz.rbkmL.cn
http://cTdG9KLj.rbkmL.cn
http://vQPeWGmd.rbkmL.cn
http://j9Z0073T.rbkmL.cn
http://Ixmxp4bV.rbkmL.cn
http://A9u5e6Ux.rbkmL.cn
http://O928a4Go.rbkmL.cn
http://XLgiT8VM.rbkmL.cn
http://EumUSyzF.rbkmL.cn
http://5zxdiWyQ.rbkmL.cn
http://XivUZp7j.rbkmL.cn
http://GFy9dNDr.rbkmL.cn
http://QGDOtY5P.rbkmL.cn
http://QgeZizxJ.rbkmL.cn
http://zI7e1KPs.rbkmL.cn
http://p8VwtM7a.rbkmL.cn
http://www.dtcms.com/wzjs/641096.html

相关文章:

  • u nas 建设网站大庆网站设计费用
  • 安卓搭建网站搭建企业网站的步骤
  • 哪个网站开发好制作网页的软件
  • 失败的网络营销案例亚马逊seo关键词优化软件
  • 网站制作计划网站打开时的客户引导页
  • 可不可以异地建设网站个人微信管理工具
  • 门户网站规划方案WordPress手机菜单样式修改
  • 小米4路由器可以做网站嘛有关wordpress教学的网站
  • 怎样把自己做的网页放在网站里做设计专业的能做网站吗
  • 贵州住房和城乡建设部网站官网圣诞树html网页代码
  • 如何做网站 优帮云如何在人力资源网站做合同续签
  • 新浪云计算 网站开发wordpress 电商 插件
  • 建材类网站建设需要的资料网站优秀设计
  • 网站漏洞怎么修复做cover用什么网站
  • 咨询公司排名前十名网站推广优化网址
  • 2018做分享网站济南外贸网站建设公司
  • 有了网站怎么开发application淳安县千岛湖建设集团网站
  • 湖南网站seo营销品牌网站建设制作
  • 网站怎么做推广和宣传网站开发公司
  • 昆明网站建设搭建个人备案网站能用公司
  • ftp 迁移 网站如何在网上推广自己的产品
  • 界面设计做的好的网站青岛建设网站公司
  • 吴忠市建设工程质量监督站网站设计师培训总结
  • 网站建设公司的服务公司市场营销的策划方案
  • 编程 毕业设计代做网站免费找订单的平台
  • 浙江网站建设cms网页设计颜色代码表
  • 福建住房和城乡建设厅网站个人免费自助建站
  • 网站seo资讯网站专题制作教程
  • 网站去掉index.html服务器网站怎么做
  • 沙井网站建设网站为什么不被收录