fastapi自定义中间件

fastapi自定义中间件

1、自定义中间件类

python 复制代码
from fastapi import Request
from starlette.middleware.base import BaseHTTPMiddleware

class MyMiddleware(BaseHTTPMiddleware):
    def __init__(self, app,*args, **kwargs):
        super().__init__(app,*args, **kwargs)

    async def dispatch(self, request: Request, call_next):
        print("MyMiddleware =============================== ")
        # 接收来自客户端的Request请求;
        headers = dict(request.scope['headers'])
        # 将Request请求传回原路由
        response = await call_next(request)
        return response

2、使用自定义中间件

python 复制代码
app.add_middleware(MyMiddleware)

3、中间件执行顺序,从下往上执行

python 复制代码
app.add_middleware(xx1)
app.add_middleware(xx2)

会先执行xx2再执行xx1

相关推荐
m0_743470373 分钟前
使用Python进行PDF文件的处理与操作
jvm·数据库·python
数据科学小丫2 小时前
Python 数据存储操作_数据存储、补充知识点:Python 与 MySQL交互
数据库·python·mysql
Knight_AL2 小时前
Nacos 启动问题 Failed to create database ’D:\nacos\nacos\data\derby-data’
开发语言·数据库·python
查古穆3 小时前
python进阶-Pydantic模型
开发语言·python
佳木逢钺4 小时前
PyQt界面美化系统高级工具库:打造现代化桌面应用的完整指南
python·pyqt
工頁光軍4 小时前
基于Python的Milvus完整使用案例
开发语言·python·milvus
Csvn4 小时前
特殊方法与运算符重载
python
xht08324 小时前
PHP vs Python:编程语言终极对决
开发语言·python·php
2401_879693874 小时前
使用Python控制Arduino或树莓派
jvm·数据库·python
查古穆5 小时前
python进阶-推导式
开发语言·python