zoukankan      html  css  js  c++  java
  • FastAPI 学习之路(三十)中间件

      什么是中间件呢,"中间件"是一个函数,它在每个请求被特定的路径操作处理之前,以及在每个响应返回之前工作.

    • 它接收你的应用程序的每一个请求.

    • 然后它可以对这个请求做一些事情或者执行任何需要的代码.

    • 然后它将请求传递给应用程序的其他部分 (通过某种路径操作).

    • 然后它获取应用程序生产的响应 (通过某种路径操作).

    • 它可以对该响应做些什么或者执行任何需要的代码.

    • 然后它返回这个 响应.

          那么看下如何创建中间件?

          

    要创建中间件你可以在函数的顶部使用装饰器 @app.middleware("http").

    中间件参数接收如下参数:

    • request.

    • 一个函数 call_next 它将接收 request 作为参数.

      • 这个函数将 request 传递给相应的 路径操作.

      • 然后它将返回由相应的路径操作生成的 response.

    • 然后你可以在返回 response 前进一步修改它.

        我们看下如何去实现中间件。

    import time
    from fastapi import FastAPI, Request
    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['leizishuocceshikaifa']="leizishuoceshikaifa"
        return response
    @app.post("/create")
    def post():
        return "post"

    我们实现一个中间件,

                在 response 的前和后 在任何路径操作收到request前,可以添加要和请求一起运行的代码.也可以在响应生成但是返回之前添加代码。

            我们去看下接口输出的结果

     

     我们看下接口返回的Headers

     我们可以看到,我标记红色的地方,就是我们在请求的中间件中,处理的,默认就给我们返回我们处理后的。

  • 相关阅读:
    Python 模块 itertools
    Python 字符串的encode与decode
    python 模块 hashlib(提供多个不同的加密算法)
    暴力尝试安卓gesture.key
    hdu 1300 Pearls(DP)
    hdu 1232 畅通工程(并查集)
    hdu 1856 More is better(并查集)
    hdu 1198 Farm Irrigation(并查集)
    hdu 3635 Dragon Balls(并查集)
    hdu 3038 How Many Answers Are Wrong(并查集)
  • 原文地址:https://www.cnblogs.com/leiziv5/p/15416768.html
Copyright © 2011-2022 走看看