๐ โก ๐ ๏ธ ๐จโ๐จ¶
๐ผ ๐ ๐ซ ๐ค ๐ช ๐จ ๐ฒ ๐ ๐ ๐ โก ๐ ๏ธ ๐ข.
โ๏ธ ๐ ๐ซ ๐จ ๐ฒ.
โ๏ธ ๐ ๐ช โซ๏ธ ๐ ๏ธ/โ.
๐ ๐ผ, โฉ๏ธ ๐ฃ โก ๐ ๏ธ ๐ข ๐ข โฎ๏ธ Depends
, ๐ ๐ช ๐ฎ list
dependencies
โก ๐ ๏ธ ๐จโ๐จ.
๐ฎ dependencies
โก ๐ ๏ธ ๐จโ๐จ¶
โก ๐ ๏ธ ๐จโ๐จ ๐จ ๐ฆ โ dependencies
.
โซ๏ธ ๐ list
Depends()
:
from fastapi import Depends, FastAPI, Header, HTTPException
app = FastAPI()
async def verify_token(x_token: str = Header()):
if x_token != "fake-super-secret-token":
raise HTTPException(status_code=400, detail="X-Token header invalid")
async def verify_key(x_key: str = Header()):
if x_key != "fake-super-secret-key":
raise HTTPException(status_code=400, detail="X-Key header invalid")
return x_key
@app.get("/items/", dependencies=[Depends(verify_token), Depends(verify_key)])
async def read_items():
return [{"item": "Foo"}, {"item": "Bar"}]
๐ ๐ ๐ ๐ ๏ธ/โ ๐ ๐ ๐ ๐. โ๏ธ ๐ซ ๐ฒ (๐ฅ ๐ซ ๐จ ๐) ๐ ๐ซ ๐ถโโ๏ธ ๐ โก ๐ ๏ธ ๐ข.
Tip
๐จโ๐จ โ โป ๐ข ๐ข, & ๐ฆ ๐ซ โ.
โ๏ธ ๐ dependencies
โก ๐ ๏ธ ๐จโ๐จ ๐ ๐ช โ ๐ญ ๐ซ ๐ ๏ธ โช โ ๐จโ๐จ/๐ญ โ.
โซ๏ธ ๐ช โน โ ๐จ ๐ ๐ฉโ๐ป ๐ ๐ โป ๐ข ๐ ๐ & ๐ช ๐ญ โซ๏ธ ๐.
Info
๐ ๐ผ ๐ฅ โ๏ธ ๐ญ ๐ ๐ X-Key
& X-Token
.
โ๏ธ ๐ฐ ๐ผ, ๐โ ๐ ๏ธ ๐โโ, ๐ ๐ ๐ค ๐ ๐ฐ โช๏ธโก๏ธ โ๏ธ ๐ ๏ธ ๐โโ ๐ (โญ ๐).
๐ โ & ๐จ ๐ฒ¶
๐ ๐ช โ๏ธ ๐ ๐ ๐ข ๐ โ๏ธ ๐.
๐ ๐¶
๐ซ ๐ช ๐ฃ ๐จ ๐ (๐ ๐) โ๏ธ ๐ ๐ง-๐:
from fastapi import Depends, FastAPI, Header, HTTPException
app = FastAPI()
async def verify_token(x_token: str = Header()):
if x_token != "fake-super-secret-token":
raise HTTPException(status_code=400, detail="X-Token header invalid")
async def verify_key(x_key: str = Header()):
if x_key != "fake-super-secret-key":
raise HTTPException(status_code=400, detail="X-Key header invalid")
return x_key
@app.get("/items/", dependencies=[Depends(verify_token), Depends(verify_key)])
async def read_items():
return [{"item": "Foo"}, {"item": "Bar"}]
๐ค โ ¶
๐ซ ๐ ๐ช raise
โ , ๐ ๐ ๐:
from fastapi import Depends, FastAPI, Header, HTTPException
app = FastAPI()
async def verify_token(x_token: str = Header()):
if x_token != "fake-super-secret-token":
raise HTTPException(status_code=400, detail="X-Token header invalid")
async def verify_key(x_key: str = Header()):
if x_key != "fake-super-secret-key":
raise HTTPException(status_code=400, detail="X-Key header invalid")
return x_key
@app.get("/items/", dependencies=[Depends(verify_token), Depends(verify_key)])
async def read_items():
return [{"item": "Foo"}, {"item": "Bar"}]
๐จ ๐ฒ¶
& ๐ซ ๐ช ๐จ ๐ฒ โ๏ธ ๐ซ, ๐ฒ ๐ ๐ซ โ๏ธ.
, ๐ ๐ช ๐ค-โ๏ธ ๐ ๐ (๐ ๐จ ๐ฒ) ๐ โช โ๏ธ ๐ฑ ๐, & โ๏ธ ๐ฒ ๐ ๐ซ โ๏ธ, ๐ ๐ ๐ ๏ธ:
from fastapi import Depends, FastAPI, Header, HTTPException
app = FastAPI()
async def verify_token(x_token: str = Header()):
if x_token != "fake-super-secret-token":
raise HTTPException(status_code=400, detail="X-Token header invalid")
async def verify_key(x_key: str = Header()):
if x_key != "fake-super-secret-key":
raise HTTPException(status_code=400, detail="X-Key header invalid")
return x_key
@app.get("/items/", dependencies=[Depends(verify_token), Depends(verify_key)])
async def read_items():
return [{"item": "Foo"}, {"item": "Bar"}]
๐ ๐ช โก ๐ ๏ธ¶
โช, ๐โ ๐ ๐ โ ๐ ๐ฆ ๐ธ (๐ฆ ๐ธ - ๐ ๐), ๐ฒ โฎ๏ธ ๐ ๐, ๐ ๐ ๐ก โ ๐ฃ ๐ dependencies
๐ข ๐ช โก ๐ ๏ธ.
๐ ๐¶
โญ ๐ฅ ๐ ๐ โ ๐ฎ ๐ ๐ FastAPI
๐ธ, ๐ ๐ซ โ ๐ โก ๐ ๏ธ.