首页 > Windows开发 > 详细

FastAPI 中间件(二) 高级中间件

时间:2020-06-04 19:40:44      阅读:101      评论:0      收藏:0      [点我收藏+]

作者:麦克煎蛋   出处: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

FastAPI 中间件(二) 高级中间件

原文:https://www.cnblogs.com/mazhiyong/p/12988413.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!