ð TL;DR (3è¡èŠçŽ)
FastAPIã¯ãPythonã§è¶ é«éãªWeb APIãé©ãã»ã©ç°¡åã«äœãããã®ã¢ãã³ãªãã¬ãŒã ã¯ãŒã¯ã§ãã æ©æ¢°åŠç¿ã¢ãã«ã®å ¬éããæ°ããWebãµãŒãã¹ã®ããã¯ãšã³ãéçºãªã©ãããã©ãŒãã³ã¹ãæ±ããããå Žé¢ã§äœ¿ãããŸãã æå€§ã®ç¹åŸŽã¯ãã³ãŒããæžãã ãã§APIã®ä»æ§æžïŒããã¥ã¡ã³ãïŒãèªåã§çæãããç¹ã§ãã
1. ð€ äžäœFastAPIãšã¯äœïŒïŒæ žå¿çãªåœ¹å²ãšäž»ãªäœ¿çšäŸïŒ
Pythonã§Webã¢ããªã±ãŒã·ã§ã³ãäœãããšãããšãDjangoãFlaskãšãã£ããã¬ãŒã ã¯ãŒã¯ãæåã§ããããã§ã¯ãFastAPIã¯äžäœäœãéãã®ã§ããããïŒ
æ žå¿çãªåœ¹å²: è¶ åªç§ãªã¬ã¹ãã©ã³ã®æ³šæã·ã¹ãã ðœïž
FastAPIãäŸãããªãããè¶ åªç§ã§ã¢ãã³ãªã¬ã¹ãã©ã³ã®æ³šæã·ã¹ãã ãã§ãã
ã¬ã¹ãã©ã³ãæ³åããŠã¿ãŠãã ããã
- ã客ãã (ã¯ã©ã€ã¢ã³ã): Webãã©ãŠã¶ãã¹ããã¢ããªãªã©ãæ å ±ãæ±ããåŽã§ãã
- åšæ¿ (ãµãŒããŒã®ããžãã¯): ããŒã¿ããŒã¹ããããŒã¿ãåã£ãŠããããè€éãªèšç®ãããããããå®éã®åŠçãè¡ãå Žæã§ãã
- 泚æã·ã¹ãã (APIãã¬ãŒã ã¯ãŒã¯): ã客ããã®æ³šæïŒãªã¯ãšã¹ãïŒãæ£ç¢ºã«åšæ¿ã«äŒããåºæ¥äžãã£ãæçïŒã¬ã¹ãã³ã¹ïŒãã客ããã®å ãžå±ãã圹å²ãæ ããŸãã
å€ã泚æã·ã¹ãã ã ãšãçŽã®äŒç¥šãæã§æžããããå£é ã§äŒãããããã®ã§ã泚æãã¹ãèµ·ããããæçãåºãŠãããŸã§ã«æéãããã£ããããŸãããã
ããã§ç»å Žããã®ãFastAPIã§ããFastAPIãšããææ°ã®æ³šæã·ã¹ãã ã¯ã以äžã®ãããªçŽ æŽãããç¹åŸŽãæã£ãŠããŸãã
-
è¶ é«é (Fast) ð: ã¿ãã¬ããã§æ³šæãåãä»ããå³åº§ã«åšæ¿ã®ã¢ãã¿ãŒã«è¡šç€ºãããããã«ãéä¿¡ã®ç¡é§ã培åºçã«æé€ããéåžžã«é«éã«ãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ãåŠçããŸããããã¯ã
StarletteïŒéåæåŠçïŒãšPydanticïŒããŒã¿æ€èšŒïŒãšãã髿§èœãªã©ã€ãã©ãªã®äžã«æãç«ã£ãŠãããããã§ãã -
ééãããªã (Type Hint) âïž: ããã¹ã¿ã倧çãã§ããšããæ³šæã«å¯ŸããŠããã©ã®ãã¹ã¿ã§ããïŒãã倧çãã¯ææã§ããããããã§ããïŒããšäºåã«ç¢ºèªããŠãããŸããPythonã®åãã³ããšããæ©èœã䜿ã£ãŠãéãããŠããããŒã¿ã®åïŒæ°å€ãªã®ããæååãªã®ããªã©ïŒãå³å¯ã«ãã§ãã¯ããäºæãã¬ãšã©ãŒãæªç¶ã«é²ããŸãã
-
èªåã§ã¡ãã¥ãŒãæŽæ°ããã (Automatic Docs) ð: æ°ããã¡ãã¥ãŒã远å ãããããã®å Žã§ã¡ãã¥ãŒããã¯ãèªåçã«æŽæ°ãããŸããFastAPIã¯ãããªããæžããPythonã³ãŒããè§£æããããã®APIã¯ããããããŒã¿ãåãåã£ãŠãããããããŒã¿ãè¿ããŸããããšãã仿§æžïŒããã¥ã¡ã³ãïŒãèªåã§çæããŠãããŸããããã«ãããä»ã®éçºè ãšã®é£æºãéåžžã«ã¹ã ãŒãºã«ãªããŸãã
ã€ãŸãFastAPIã¯ããé«éã§ãå®å šã§ãéçºè ã«èŠªåãªãWeb APIãæ§ç¯ããããã®ãçŸä»£çãªåé¡ã解決ããããã«çãŸãããã¬ãŒã ã¯ãŒã¯ãªã®ã§ãã
äž»ãªäœ¿çšäŸ
ãã®ãè¶ åªç§ãªæ³šæã·ã¹ãã ãã¯ãå ·äœçã«ã©ããªå Žé¢ã§ç䟡ãçºæ®ããã®ã§ããããïŒ
-
ð€ æ©æ¢°åŠç¿ã¢ãã«ã®APIå: ããªããç»åèªèãæç« çæã®çŽ æŽãããAIã¢ãã«ãéçºãããšããŸãããã®ã¢ãã«ãä»ã®äººã«ã䜿ã£ãŠãããã«ã¯ã©ãããã°è¯ãã§ããããïŒ FastAPIã䜿ãã°ããã®AIã¢ãã«ãWeb APIãšããŠç°¡åã«å ¬éã§ããŸããäŸãã°ãããã®ç»åãAPIã«éããšãåã£ãŠãããã®ã®ååãè¿ããŠãããããšãã£ããµãŒãã¹ããæ°è¡ã®ã³ãŒãã§å®çŸã§ããŸããé«éãªåŠçæ§èœã¯ãå€ãã®ãªã¯ãšã¹ããæãå¿ èŠãããAIãµãŒãã¹ã«ãŽã£ããã§ãã
-
ð§© ãã€ã¯ããµãŒãã¹ã®ããã¯ãšã³ã: æè¿ã®WebãµãŒãã¹ã¯ãäžã€ã®å·šå€§ãªã¢ããªã±ãŒã·ã§ã³ãäœãã®ã§ã¯ãªããããŠãŒã¶ãŒèªèšŒããåå管çããæ±ºæžããšãã£ãå°ããªãµãŒãã¹ïŒãã€ã¯ããµãŒãã¹ïŒãããããäœãããããã飿ºãããŠåããææ³ãäž»æµã§ããFastAPIã¯èµ·åãéããå°ãªãã³ãŒãã§ç¬ç«ããAPIãæ§ç¯ã§ããããããããããã€ã¯ããµãŒãã¹ã®éçºã«éåžžã«é©ããŠããŸãã
-
â¡ ãªã¢ã«ã¿ã€ã Webã¢ããªã±ãŒã·ã§ã³: ãã£ããã¢ããªãæ ªäŸ¡ã®ãªã¢ã«ã¿ã€ã 衚瀺ã®ããã«ããµãŒããŒãšã¯ã©ã€ã¢ã³ããåžžã«åæ¹åã§éä¿¡ããå¿ èŠãããã¢ããªã±ãŒã·ã§ã³ã«ã匷ãã§ããFastAPIã¯WebSocketãšããæè¡ãç°¡åã«æ±ããããããªã¢ã«ã¿ã€ã æ§ãæ±ããããéçºã§ã掻èºããŸãã
ãã®ããã«ãFastAPIã¯ç¹ã«ããã©ãŒãã³ã¹ãšéçºå¹çãéèŠãããã¢ãã³ãªWebéçºã®çŸå Žã§ã匷åãªéžæè¢ãšãªã£ãŠããŸãã
2. ð» ã€ã³ã¹ããŒã«æ¹æ³
FastAPIã䜿ãã«ã¯ãæ¬äœãšããããåããããã®WebãµãŒããŒïŒASGIãµãŒããŒïŒãå¿
èŠã§ããããã§ã¯æãäžè¬çãªuvicornãäžç·ã«ã€ã³ã¹ããŒã«ããŸãã
ã¿ãŒããã«ïŒWindowsãªãã³ãã³ãããã³ãããPowerShellïŒã§ã以äžã®ã³ãã³ããå®è¡ããã ãã§ãã
pip install "fastapi[all]"
[all]ãä»ãããšãuvicornãããã®ä»äŸ¿å©ãªé¢é£ã©ã€ãã©ãªãäžæ¬ã§ã€ã³ã¹ããŒã«ãããã®ã§ãåå¿è
ã®æ¹ã«ã¯ãããäžçªããããã§ãã
ããåå¥ã«ã€ã³ã¹ããŒã«ãããå Žåã¯ã以äžã®ããã«ããŸãã
pip install fastapi
pip install "uvicorn[standard]"
3. ð ïž å®éã«åäœãããµã³ãã«ã³ãŒã
çŸèã¯äžèŠã«åŠããããŸãã¯å®éã«åãã³ãŒããèŠãŠã¿ãŸãããã
以äžã®ã³ãŒããã³ããŒããŠãmain.pyãšããååã®ãã¡ã€ã«ã«ä¿åããŠãã ããã
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional
# FastAPIã®ã€ã³ã¹ã¿ã³ã¹ãäœæ
app = FastAPI()
# --- Pydanticã䜿ã£ãããŒã¿ã¢ãã«å®çŸ© ---
# ãªã¯ãšã¹ãããã£ã®åãå®çŸ©ããŸãã
# ããã«ãããèªåã§ããŒã¿æ€èšŒãè¡ãããŸãã
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
# --- APIãšã³ããã€ã³ãã®å®çŸ© ---
# 1. ã«ãŒããšã³ããã€ã³ã (GETãªã¯ãšã¹ã)
@app.get("/")
async def read_root():
"""
Webãµã€ãã®ãããããŒãžã«ã¢ã¯ã»ã¹ãããšãã«è¡šç€ºãããã¡ãã»ãŒãžã
"""
return {"message": "ããããïŒFastAPIã®äžçãžïŒ"}
# 2. ãã¹ãã©ã¡ãŒã¿ãæã€ãšã³ããã€ã³ã (GETãªã¯ãšã¹ã)
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: Optional[str] = None):
"""
æå®ãããIDã®ã¢ã€ãã æ
å ±ãååŸããã
äŸ: /items/5?q=somequery
- item_id: URLã®äžéšãšããŠåãåã (ãã¹ãã©ã¡ãŒã¿)
- q: URLã®?以éã§åãåã (ã¯ãšãªãã©ã¡ãŒã¿)
"""
return {"item_id": item_id, "q": q}
# 3. ãªã¯ãšã¹ãããã£ãæã€ãšã³ããã€ã³ã (POSTãªã¯ãšã¹ã)
@app.post("/items/")
async def create_item(item: Item):
"""
æ°ããã¢ã€ãã ãäœæããã
ã¯ã©ã€ã¢ã³ãããéãããŠããJSONããŒã¿ãItemã¢ãã«ã§åãåãã
"""
# åãåã£ãããŒã¿ãèŸæžåã«å€æããŠãå°ãå å·¥ããŠè¿ã
item_dict = item.dict()
if item.tax:
price_with_tax = item.price + item.tax
item_dict.update({"price_with_tax": price_with_tax})
return item_dict
ãã¡ã€ã«ãäœæããããã¿ãŒããã«ã§ãã®ãã¡ã€ã«ããããã£ã¬ã¯ããªã«ç§»åãã以äžã®ã³ãã³ãã§ãµãŒããŒãèµ·åããŸãã
uvicorn main:app --reload
main:main.pyãšãããã¡ã€ã«åãæããŸããapp:main.pyã®äžã§app = FastAPI()ãšå®çŸ©ããã€ã³ã¹ã¿ã³ã¹åãæããŸãã--reload: ã³ãŒãã倿Žãããã³ã«ãµãŒããŒãèªåã§åèµ·åããŠããããéçºäžã«éåžžã«äŸ¿å©ãªãªãã·ã§ã³ã§ãã
ã¿ãŒããã«ã« Application startup complete. ãšè¡šç€ºããããæåã§ãïŒ
ããã§ããªãã®PCäžã§Web APIãµãŒããŒãåãå§ããŸããã
4. ð ã³ãŒãã®è©³çŽ°èª¬æ
ããŠãå ã»ã©ã®ãµã³ãã«ã³ãŒããäœãããŠããã®ããå°ã詳ããèŠãŠãããŸãããã
â ã©ã€ãã©ãªã®ã€ã³ããŒããšã€ã³ã¹ã¿ã³ã¹å
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional
app = FastAPI()
FastAPI: FastAPIãã¬ãŒã ã¯ãŒã¯ã®æ¬äœã§ããBaseModel:pydanticã©ã€ãã©ãªã®ã¯ã©ã¹ã§ããªã¯ãšã¹ãããŒã¿ã®åå®çŸ©ãšæ€èšŒã«äœ¿ããŸããFastAPIã®åŒ·åãªæ©èœã®å¿èéšã§ããOptional: Pythonã®åãã³ãã®äžã€ã§ãããã®å€ã¯ãªããŠãè¯ãïŒNoneã§ãå¯ïŒããšããããšã瀺ããŸããapp = FastAPI(): FastAPIã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããŠããŸãããã®appãšãã倿°ã«å¯ŸããŠãããããAPIã®åæ©èœãç»é²ããŠãããŸãããããç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã®äžå¿ã§ãã
â¡ ããŒã¿ã¢ãã«ã®å®çŸ©
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
- ããã§ã¯
ItemãšãããããŒã¿ã®èšèšå³ããå®çŸ©ããŠããŸããBaseModelãç¶æ¿ããã®ããã€ã³ãã§ãã name: str:nameãšãããã£ãŒã«ãã¯æåå(str)ã§ãªããã°ãªããªãããšããã«ãŒã«ãå®çŸ©ããŠããŸããprice: float:priceã¯æµ®åå°æ°ç¹æ°(float)ã§ããå¿ èŠããããŸããdescription: Optional[str] = None:descriptionã¯æååã§ãããOptionalãä»ããŠããã®ã§å¿ é ã§ã¯ãããŸãããããããŒã¿ãéãããŠããªããã°ãããã©ã«ãå€ãšããŠNoneãå ¥ããŸãã- ãã®ããã«å®çŸ©ããŠããã ãã§ãFastAPIã¯APIã«éãããŠããJSONããŒã¿ããã®èšèšå³éããèªåã§ãã§ãã¯ããŠãããŸãããã
priceã«æååãéããªã©ãã«ãŒã«éåã®ããŒã¿ãæ¥ãããããã®ããŒã¿ã¯ééã£ãŠããŸããããšãããšã©ãŒã¡ãã»ãŒãžãèªåã§è¿ããŠãããŸãããããã§ãããïŒ
⢠APIãšã³ããã€ã³ãã®å®çŸ©ïŒãã³ã¬ãŒã¿ïŒ
@app.get("/")
async def read_root():
# ...åŠç...
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: Optional[str] = None):
# ...åŠç...
@app.post("/items/")
async def create_item(item: Item):
# ...åŠç...
@app.get(...)ã@app.post(...)ã®éšåã¯ãã³ã¬ãŒã¿ãšåŒã°ãããã®çŽåŸã«ãã颿°ã«ç¹å¥ãªæ©èœã远å ãã圹å²ãæã¡ãŸãã- ããã§ã¯ãããã®URLãã¹ïŒäŸ:
/ã/items/{item_id}ïŒã«ããã®HTTPã¡ãœããïŒäŸ:GETãPOSTïŒã§ã¢ã¯ã»ã¹ãæ¥ããããã®é¢æ°ïŒäŸ:read_rootïŒãå®è¡ããŠãã ããããšããçŽä»ããè¡ã£ãŠããŸããããããã¹ãªãã¬ãŒã·ã§ã³ãšåŒã³ãŸãã async def: FastAPIã¯éåæåŠçã«å¯Ÿå¿ããŠãããããasyncããŒã¯ãŒãã䜿ããŸããããã«ãããããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ãªã©æéã®ãããåŠçãåŸ ã£ãŠããéã«ãä»ã®ãªã¯ãšã¹ããå¹ççã«æãããšãã§ããŸããåå¿è ã®ãã¡ã¯ãããšããããä»ããŠããããŸããªãããããã®æèŠã§ã倧äžå€«ã§ãã
â£ é¢æ°ã®åŒæ°ã«ããããŒã¿åãåã
- ãã¹ãã©ã¡ãŒã¿:
@app.get("/items/{item_id}")ã®{item_id}ã®ããã«ãURLã®äžéšãå¯å€ã«ãããå Žåã«çšããŸãã颿°ã®åŒæ°item_id: intã§åãåããŸããåãã³ãã§intãšæå®ããŠããã®ã§ãFastAPIã¯èªåã§æååãæŽæ°ã«å€æãããã倿ã§ããªããã°ãšã©ãŒãè¿ããŸãã - ã¯ãšãªãã©ã¡ãŒã¿:
read_item颿°ã®åŒæ°q: Optional[str] = Noneã®éšåã§ããããã¯URLã®æ«å°Ÿã«?q=...ãšãã圢ã§ä»ãããããã©ã¡ãŒã¿ãåãåããŸããå¿ é ã§ã¯ãªãã®ã§Optionalãä»ããŠããŸãã - ãªã¯ãšã¹ãããã£:
create_item颿°ã®åŒæ°item: Itemã®éšåã§ããPOSTãªã¯ãšã¹ããªã©ã§éãããŠããJSONããŒã¿ããå ã»ã©å®çŸ©ããItemã¢ãã«ïŒèšèšå³ïŒãšããŠåãåããŸããFastAPIãèªåã§JSONãè§£æããItemã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã«å€æããããã«ããŒã¿ãæ£ãããæ€èšŒãŸã§è¡ã£ãŠããããéåžžã«åŒ·åãªéšåã§ãã
5. â ïž æ³šæç¹ãŸãã¯ãã³ã
FastAPIã䜿ãå§ããéã«ãå€ãã®åå¿è ãã€ãŸãããã€ã³ãããç¥ã£ãŠãããšéçºãäœåãæ¥œã«ãªããã³ãã玹ä»ããŸãã
ãã³ã: èªåçæãããAPIããã¥ã¡ã³ãã¯ç¥ããŒã«ïŒç©æ¥µçã«äœ¿ããïŒ ð
FastAPIããéçºè
ã«åªããããšèšãããæå€§ã®çç±ãããã§ãã
å
ã»ã© uvicorn main:app --reload ã§ãµãŒããŒãèµ·åããŸãããããã®ç¶æ
ã§ãWebãã©ãŠã¶ãéããŠä»¥äžã®URLã«ã¢ã¯ã»ã¹ããŠã¿ãŠãã ããã
- http://127.0.0.1:8000/docs
ãããšãé©ãã»ã©ç¶ºéºã§ã€ã³ã¿ã©ã¯ãã£ããªAPIããã¥ã¡ã³ãã衚瀺ãããã¯ãã§ãïŒ

(ç»åã¯å ¬åŒãµã€ããã)
- äœãã§ããã®ïŒ: ããªããäœã£ãå
šãŠã®APIãšã³ããã€ã³ãïŒ
/,/items/{item_id}ãªã©ïŒãäžèŠ§è¡šç€ºãããŸãã - ã©ããã£ãŠäœ¿ãã®ïŒ: åãšã³ããã€ã³ããã¯ãªãã¯ããŠéããšããTry it outããšãããã¿ã³ããããŸãããããæŒããšããã©ãŠã¶äžããçŽæ¥APIã«ãªã¯ãšã¹ããéãããã®çµæããªã¢ã«ã¿ã€ã ã§ç¢ºèªã§ããŸãã
POSTãªã¯ãšã¹ããªããéä¿¡ããJSONããŒã¿ãå ¥åãããã©ãŒã ã衚瀺ãããŸãã - äœãå¬ããã®ïŒ:
- APIã®åäœç¢ºèªã®ããã«ããããã
curlã³ãã³ããå©ããããPostmanã®ãããªå°çšããŒã«ãç«ã¡äžãããããå¿ èŠããããŸããã - ã³ãŒãã倿Žããã°ããã©ãŠã¶ããªããŒãããã ãã§ããã¥ã¡ã³ããææ°ã®ç¶æ ã«æŽæ°ãããŸãã
- ä»ã®ããŒã ã¡ã³ããŒã«APIã®äœ¿ãæ¹ã説æãããšãããã®URLãå ±æããã ãã§æžã¿ãŸãã
- APIã®åäœç¢ºèªã®ããã«ããããã
éçºäžã¯åžžã«ãã® /docs ããŒãžãéããŠãããåäœç¢ºèªã®æ ç¹ãšããŠæŽ»çšããã®ããFastAPIã䜿ãããªãäžçªã®è¿éã§ãã
ïŒã¡ãªã¿ã«ãããäžã€ http://127.0.0.1:8000/redoc ã«ã¢ã¯ã»ã¹ãããšããŸãå¥ã®ã¹ã¿ã€ã«ã®ããã¥ã¡ã³ããèŠãããšãã§ããŸããïŒ
6. ð äžç·ã«èŠãŠãããšè¯ãã©ã€ãã©ãª
FastAPIãåŠãã ããªããæ¬¡ã«è§Šããã¹ãã©ã€ãã©ãªã¯ãééããªãããã§ãã
- Pydantic
å®ã¯ãããªãã¯æ¢ã«Pydanticã«è§ŠããŠããŸãããµã³ãã«ã³ãŒãã®
class Item(BaseModel):ã®éšåãããã§ããPydanticã¯ãPythonã®åãã³ãã䜿ã£ãŠåŒ·åãªããŒã¿æ€èšŒãšèšå®ç®¡çãè¡ãã©ã€ãã©ãªã§ããFastAPIã®ããŒã¿ããªããŒã·ã§ã³æ©èœã¯ãå®å šã«ãã®Pydanticã«äŸåããŠããŸãã
FastAPIããäžæ©é¢ããŠPydanticåäœã§åŠã¶ããšã§ã
- ããè€éãªããŒã¿æ§é ã®å®çŸ©æ¹æ³ïŒãªã¹ãããã¹ããããªããžã§ã¯ããªã©ïŒ
- ã«ã¹ã¿ã ããªããŒã·ã§ã³ïŒäŸïŒããã¹ã¯ãŒãã¯8æå以äžããªã©ç¬èªã®ã«ãŒã«ã远å ïŒ
- JSONãã¡ã€ã«ãç°å¢å€æ°ããèšå®ãèªã¿èŸŒãæ¹æ³ ãªã©ãæ·±ãçè§£ã§ããŸããPydanticããã¹ã¿ãŒããããšã¯ãFastAPIããã¹ã¿ãŒããããšã«çŽçµããŸãããã²å ¬åŒãµã€ããèŠããŠã¿ãŠãã ããã
7. ð ãŸãšã
仿¥ã¯ãç²ãæ§ã§ããïŒæåŸã«ãFastAPIã«ã€ããŠåŠãã ããšã®èŠç¹ãæ¯ãè¿ããŸãããã
- FastAPIã¯ãPythonã§é«éãã€ã¢ãã³ãªWeb APIãç°¡åã«äœãããã®ãã¬ãŒã ã¯ãŒã¯ã
- åãã³ãããã«æŽ»çšããããšã§ãã³ãŒãã®å®å šæ§ãé«ãããšãã£ã¿ã®è£å®ãå¹ãããããªãã
- æå€§ã®é åã¯ãã³ãŒããæžãã ãã§ã€ã³ã¿ã©ã¯ãã£ããªAPIããã¥ã¡ã³ããèªåçæãããããšã
FastAPIã䜿ãã°ããããŸã§é¢åã ã£ãAPIéçºãããã¥ã¡ã³ãäœæã®æéããè§£æŸãããããªãã¯æ¬æ¥éäžãã¹ãããžãã¹ããžãã¯ã®å®è£ ã«å°å¿µã§ããŸãã
ãããæ¬¡ã¯ããªãã®çªã§ãïŒ
ãææŠèª²é¡ã
仿¥äœæããmain.pyã«ãã¢ã€ãã æ
å ±ãæŽæ°ããããã®APIãšã³ããã€ã³ãã远å ããŠã¿ãŸãããïŒ
- ãã³ã1: æŽæ°åŠçãªã®ã§ãHTTPã¡ãœããã¯
PUTã䜿ãã®ãäžè¬çã§ãããã³ã¬ãŒã¿ã¯@app.put(...)ãšãªããŸãã - ãã³ã2: ã©ã®ã¢ã€ãã ãæŽæ°ãããæå®ããå¿
èŠãããã®ã§ãURLã¯
/items/{item_id}ã®ããã«ãã¹ãã©ã¡ãŒã¿ã䜿ããŸãããã - ãã³ã3: æŽæ°ããããŒã¿ã¯ãªã¯ãšã¹ãããã£ã§åãåãã®ã§ã
create_item颿°ãšåãããã«Itemã¢ãã«ãåŒæ°ã«åããŸãã - 宿ã€ã¡ãŒãž:
PUTãªã¯ãšã¹ãã§/items/10ã«ã¢ã¯ã»ã¹ããJSONããŒã¿ãéããšããã®ã¢ã€ãã ã®æ å ±ãæŽæ°ãããïŒãšããæ³å®ã®ïŒé¢æ°ãäœã£ãŠã¿ãŠãã ããã
ãã®èª²é¡ãã¯ãªã¢ããã°ãããªãã¯ããç«æŽŸãªãFastAPI䜿ããã®äžæ©ãèžã¿åºããŠããŸãããã²ææŠããŠã¿ãŠãã ãããïŒ