๐ง ๐ ๏ธ¶
๐ ๐ฐ ๐ โ โ ๐ฎ ๐ ๐ ๏ธ ๐ ๐ธ.
& โคด๏ธ ๐ โ โ ๐ต โ โฎ๏ธ CORSMiddleware
.
๐ ๐ ๐ฅ ๐ ๐ โ โ๏ธ ๐ ๐ ๏ธ.
โ ๐ซ ๐ ๏ธ¶
FastAPI โ๏ธ ๐ ๐ & ๐ ๏ธ ๐ซ ๐ง, ๐ ๐ช โ๏ธ ๐ ๐ซ ๐ ๏ธ.
๐ ๏ธ ๐ซ โ๏ธ โ FastAPI โ๏ธ ๐ ๐ท, ๐ โซ๏ธ โฉ ๐ซ ๐.
๐ข, ๐ซ ๐ ๏ธ ๐ ๐ โ ๐จ ๐ซ ๐ฑ ๐ฅ โ.
, ๐งพ ๐ฅ-๐ฅณ ๐ซ ๐ ๏ธ ๐ซ ๐ ๐ฒ ๐ฌ ๐ ๐ณ ๐:
from unicorn import UnicornMiddleware
app = SomeASGIApp()
new_app = UnicornMiddleware(app, some_config="rainbow")
โ๏ธ 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 ๐ ๐ ๐ ๏ธ โ โ๏ธ ๐ผ, ๐ฅ ๐ ๐ โญ โ โ๏ธ ๐ซ.
๐ก โน
โญ ๐ผ, ๐ ๐ช โ๏ธ from starlette.middleware.something import SomethingMiddleware
.
FastAPI ๐ ๐ ๐ ๏ธ fastapi.middleware
๐ช ๐, ๐ฉโ๐ป. โ๏ธ ๐
๐ช ๐ ๏ธ ๐ ๐ โช๏ธโก๏ธ ๐.
HTTPSRedirectMiddleware
¶
๐ ๏ธ ๐ ๐ ๐จ ๐จ ๐ ๐ฏโโ๏ธ https
โ๏ธ wss
.
๐ ๐จ ๐จ http
โ๏ธ ws
๐ โ ๐ โ โฉ๏ธ.
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
¶
๐ ๏ธ ๐ ๐ ๐จ ๐จ โ๏ธ โ โ Host
๐, โ ๐โโ ๐ก ๐บ๐ธ๐ ๐ฆ ๐ ๐.
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"}
๐ โ ๐โ๐ฆบ:
allowed_hosts
- ๐ ๐ ๐ ๐ ๐ โ ๐. ๐ ๐ โ*.example.com
๐โ๐ฆบ ๐ ๐. โ ๐ ๐ ๐ฏโโ๏ธ โ๏ธallowed_hosts=["*"]
โ๏ธ ๐ซ ๐ ๏ธ.
๐ฅ ๐จ ๐จ ๐จ ๐ซ โ โ โคด๏ธ 400
๐จ ๐ ๐จ.
GZipMiddleware
¶
๐ต ๐ ๐จ ๐ ๐จ ๐ ๐ "gzip"
Accept-Encoding
๐.
๐ ๏ธ ๐ ๐ต ๐ฏโโ๏ธ ๐ฉ & ๐ฅ ๐จ.
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"
๐ โ ๐โ๐ฆบ:
minimum_size
- ๐ซ ๐ ๐จ ๐ ๐คช ๐ ๐ ๐ฏ ๐ ๐ข. ๐ข500
.
๐ ๐ ๏ธ¶
๐ค ๐ ๐ ๐ซ ๐ ๏ธ.
๐ผ:
๐ ๐ ๐ช ๐ ๏ธ โ ๐ ๐ ๏ธ ๐ฉบ & ๐ซ ๐ ๐.