zoukankan      html  css  js  c++  java
  • FastAPI 中间件(二) 高级中间件

    作者:麦克煎蛋   出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢!

    除了自定义中间件,我们也可以直接使用其他的中间件。

    FastAPI通过 app.add_middleware() 操作来引入已定义的中间件。

    from fastapi import FastAPI
    from unicorn import UnicornMiddleware
    
    app = FastAPI()
    
    app.add_middleware(UnicornMiddleware, some_config="rainbow")

    app.add_middleware()第一个参数是中间件类,同时还支持中间件的其他附加信息。

    FastAPI提供了一些常用的中间件。

    一、HTTPSRedirectMiddleware

    HTTPSRedirectMiddleware强制发来的请求协议必须是https或者wss。

    from fastapi import FastAPI
    from fastapi.middleware.httpsredirect import HTTPSRedirectMiddleware
    
    app = FastAPI()
    
    app.add_middleware(HTTPSRedirectMiddleware)
    
    
    @app.get("/")
    async def main():
        return {"message": "Hello World"}

    二、TrustedHostMiddleware

    TrustedHostMiddleware强制发来的请求必须在Header信息中设置了Host选项,为了避免HTTP Host Header攻击。

    from fastapi import FastAPI
    from fastapi.middleware.trustedhost import TrustedHostMiddleware
    
    app = FastAPI()
    
    app.add_middleware(
        TrustedHostMiddleware, allowed_hosts=["example.com", "*.example.com"]
    )
    
    
    @app.get("/")
    async def main():
        return {"message": "Hello World"}

    三、GZipMiddleware

    当请求的头信息 Accept-Encoding 字段带有"gzip"时,GZipMiddleware负责完成相应的返回结果处理。

    GZipMiddleware 支持 minimum_size 参数:当返回结果大小小于指定值时不启用压缩。(单位为字节,默认值为500)

    from fastapi import FastAPI
    from fastapi.middleware.gzip import GZipMiddleware
    
    app = FastAPI()
    
    app.add_middleware(GZipMiddleware, minimum_size=1000)
    
    
    @app.get("/")
    async def main():
        return "somebigcontent"

    更多中间件信息可参考文档:

    Starlette's Middleware docs 

    ASGI Awesome List

  • 相关阅读:
    在C#中internal、protected internal关键字是什么意思?
    JScript版CollectionBase类的一个实现
    js继承的4种方法
    ASP删除文章时,需要删除eWebEditor上传文件
    Sql Server 2005中的架构(Schema)、用户(User)、登录(Login)和角色(Role)
    js绘图研究(一)
    JavaScript中this关键字使用方法详解
    SQL SERVER中架构的理解
    利用 wz_jsgraphics.js 画线
    js种4种继承法的优缺点
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/12988413.html
Copyright © 2011-2022 走看看