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)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容