FastApi 中间件中获取请求体参数的方式

在FastApi中有时候我们有要获取请求参数的需求,就需要在这中间件中拦截请求request来获取参数做处理。
通过中间件,拿到request我们能看到,路径参数和query_params都能轻易取到。
获取request_body,这里提供两种方式,直接通过receive = await request._receive()获取,会导致请求阻塞,所以需要把数据放获取,在中间环节拿到数据。


def de(func):
    async def wrapper():
        return func

    return wrapper

async def set_body(request: Request):
    receive_ = await request._receive()
    async def receive():
        return receive_
    request._receive = receive

@fast_app.middleware("http")
async def sendErrorLog(request: Request, call_next):
    """获取request body"""
         # 1 
        # receive = await request._receive()
        # request._receive = de(receive)

        # 2 
        await set_body(request)
        # data = await request.json()   # 直接拿json格式
        # data = await request.body()
        response = await call_next(request)

你可能感兴趣的:(FastApi 中间件中获取请求体参数的方式)