๐จ ๐ช¶
๐โ ๐ ๐ช ๐จ ๐ โช๏ธโก๏ธ ๐ฉโ๐ป (โก๏ธ ๐ฌ, ๐ฅ) ๐ ๐ ๏ธ, ๐ ๐จ โซ๏ธ ๐จ ๐ช.
๐จ ๐ช ๐ ๐จ ๐ฉโ๐ป ๐ ๐ ๏ธ. ๐จ ๐ช ๐ฝ ๐ ๐ ๏ธ ๐จ ๐ฉโ๐ป.
๐ ๐ ๏ธ ๐ ๐ง โ๏ธ ๐จ ๐จ ๐ช. โ๏ธ ๐ฉโ๐ป ๐ซ ๐ฏ ๐ช ๐จ ๐จ ๐ช ๐ ๐ฐ.
๐ฃ ๐จ ๐ช, ๐ โ๏ธ Pydantic ๐ท โฎ๏ธ ๐ ๐ซ ๐๏ธ & ๐ฐ.
Info
๐จ ๐ฝ, ๐ ๐ โ๏ธ 1๏ธโฃ: POST
(๐
โ ), PUT
, DELETE
โ๏ธ PATCH
.
๐จ ๐ช โฎ๏ธ GET
๐จ โ๏ธ โ ๐ญ ๐ง, ๐, โซ๏ธ ๐โ๐ฆบ FastAPI, ๐ด ๐ถ ๐/๐ โ๏ธ ๐ผ.
โซ๏ธ ๐ซ, ๐ ๐ฉบ โฎ๏ธ ๐ฆ ๐ ๐ ๐ซ ๐ฆ ๐งพ ๐ช ๐โ โ๏ธ GET
, & ๐ณ ๐ ๐ช ๐ซ ๐โ๐ฆบ โซ๏ธ.
๐ Pydantic BaseModel
¶
๐ฅ, ๐ ๐ช ๐ BaseModel
โช๏ธโก๏ธ pydantic
:
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Union[str, None] = None
price: float
tax: Union[float, None] = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
โ ๐ ๐ฝ ๐ท¶
โคด๏ธ ๐ ๐ฃ ๐ ๐ฝ ๐ท ๐ ๐ ๐ โช๏ธโก๏ธ BaseModel
.
โ๏ธ ๐ฉ ๐ ๐ ๐ ๐ข:
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Union[str, None] = None
price: float
tax: Union[float, None] = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
๐ ๐โ ๐ฃ ๐ข ๐ข, ๐โ ๐ท ๐ข โ๏ธ ๐ข ๐ฒ, โซ๏ธ ๐ซ โ. โช, โซ๏ธ โ. โ๏ธ None
โ โซ๏ธ ๐ฆ.
๐ผ, ๐ ๐ท ๐ ๐ฃ ๐ป "object
" (โ๏ธ ๐ dict
) ๐:
{
"name": "Foo",
"description": "An optional description",
"price": 45.2,
"tax": 3.5
}
... description
& tax
๐ฆ (โฎ๏ธ ๐ข ๐ฒ None
), ๐ ๐ป "object
" ๐ โ:
{
"name": "Foo",
"price": 45.2
}
๐ฃ โซ๏ธ ๐ข¶
๐ฎ โซ๏ธ ๐ โก ๐ ๏ธ, ๐ฃ โซ๏ธ ๐ ๐ ๐ ๐ฃ โก & ๐ข ๐ข:
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Union[str, None] = None
price: float
tax: Union[float, None] = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
...& ๐ฃ ๐ฎ ๐ ๐ท ๐ โ, Item
.
๐¶
โฎ๏ธ ๐ ๐ ๐ ๐, FastAPI ๐:
- โ ๐ช ๐จ ๐ป.
- ๐ ๐ ๐ (๐ฅ ๐ช).
- โ ๐ฝ.
- ๐ฅ ๐ฝ โ, โซ๏ธ ๐ ๐จ ๐ & ๐ โ, โ ๏ธ โซ๏ธโ ๐โ & โซ๏ธโ โ ๐.
- ๐ค ๐ ๐จ ๐ ๐ข
item
.- ๐ ๐ฃ โซ๏ธ ๐ข ๐
Item
, ๐ ๐ โ๏ธ ๐ ๐จโ๐จ ๐โ๐ฆบ (๐ ๏ธ, โ๏ธ) ๐ ๐ข & ๐ซ ๐.
- ๐ ๐ฃ โซ๏ธ ๐ข ๐
- ๐ ๐ป ๐ ๐ ๐ ๐ท, ๐ ๐ช โ๏ธ ๐ซ ๐ ๐ ๐ ๐ ๐ฅ โซ๏ธ โ ๐ ๐ ๐.
- ๐ ๐ ๐ ๐ ๐ ๐ ๐, & โ๏ธ ๐ง ๐งพ โ.
๐ง ๐ฉบ¶
๐ป ๐ ๐ ๐ท ๐ ๐ ๐ ๐ ๐ ๐, & ๐ ๐ฆ ๐ ๐ ๏ธ ๐ฉบ:
& ๐ โ๏ธ ๐ ๏ธ ๐ฉบ ๐ ๐ โก ๐ ๏ธ ๐ ๐ช ๐ซ:
๐จโ๐จ ๐โ๐ฆบ¶
๐ ๐จโ๐จ, ๐ ๐ ๐ข ๐ ๐ ๐ค ๐ ๐ & ๐ ๏ธ ๐ (๐ ๐ซ๐ ๐จ ๐ฅ ๐ ๐จ dict
โฉ๏ธ Pydantic ๐ท):
๐ ๐ค โ โ โ ๐ ๐ ๏ธ:
๐ ๐ซ ๐ค, ๐ ๐ ๏ธ ๐ ๐คญ ๐ ๐ง.
& โซ๏ธ ๐ ๐ฏ ๐ง ๐, โญ ๐ ๐ ๏ธ, ๐ โซ๏ธ ๐ ๐ท โฎ๏ธ ๐ ๐จโ๐จ.
๐ค ๐ Pydantic โซ๏ธ ๐โ๐ฆบ ๐.
โฎ๏ธ ๐ผ โ โฎ๏ธ ๐ ๐ ๐.
โ๏ธ ๐ ๐ ๐ค ๐ ๐จโ๐จ ๐โ๐ฆบ โฎ๏ธ ๐ & ๐ ๐ ๐ ๐จโ๐จ:
Tip
๐ฅ ๐ โ๏ธ ๐ ๐ ๐จโ๐จ, ๐ ๐ช โ๏ธ Pydantic ๐ ๐.
โซ๏ธ ๐ ๐จโ๐จ ๐โ๐ฆบ Pydantic ๐ท, โฎ๏ธ:
- ๐-๐ ๏ธ
- ๐ โ
- ๐ ๏ธ
- ๐
- ๐ฌ
โ๏ธ ๐ท¶
๐ ๐ข, ๐ ๐ช ๐ ๐ ๐ข ๐ท ๐ ๐:
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Union[str, None] = None
price: float
tax: Union[float, None] = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: 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
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: 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
๐จ ๐ช โ โก ๐ข¶
๐ ๐ช ๐ฃ โก ๐ข & ๐จ ๐ช ๐ ๐ฐ.
FastAPI ๐ ๐ค ๐ ๐ข ๐ข ๐ ๐ โก ๐ข ๐ โ โช๏ธโก๏ธ โก, & ๐ ๐ข ๐ข ๐ ๐ฃ Pydantic ๐ท ๐ โ โช๏ธโก๏ธ ๐จ ๐ช.
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Union[str, None] = None
price: float
tax: Union[float, None] = None
app = FastAPI()
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
return {"item_id": item_id, **item.dict()}
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
app = FastAPI()
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
return {"item_id": item_id, **item.dict()}
๐จ ๐ช โ โก โ ๐ข ๐ข¶
๐ ๐ช ๐ฃ ๐ช, โก & ๐ข ๐ข, ๐ ๐ ๐ฐ.
FastAPI ๐ ๐ค ๐ ๐ซ & โ ๐ โช๏ธโก๏ธ โ ๐ฅ.
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Union[str, None] = None
price: float
tax: Union[float, None] = None
app = FastAPI()
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item, q: Union[str, None] = None):
result = {"item_id": item_id, **item.dict()}
if q:
result.update({"q": q})
return result
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
app = FastAPI()
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item, q: str | None = None):
result = {"item_id": item_id, **item.dict()}
if q:
result.update({"q": q})
return result
๐ข ๐ข ๐ ๐ค โฉ:
- ๐ฅ ๐ข ๐ฃ โก, โซ๏ธ ๐ โ๏ธ โก ๐ข.
- ๐ฅ ๐ข โญ ๐ (๐
int
,float
,str
,bool
, โ๏ธ) โซ๏ธ ๐ ๐ฌ ๐ข ๐ข. - ๐ฅ ๐ข ๐ฃ ๐ Pydantic ๐ท, โซ๏ธ ๐ ๐ฌ ๐จ ๐ช.
Note
FastAPI ๐ ๐ญ ๐ ๐ฒ q
๐ซ โ โฉ๏ธ ๐ข ๐ฒ = None
.
Union
Union[str, None]
๐ซ โ๏ธ FastAPI, โ๏ธ ๐ โ ๐ ๐จโ๐จ ๐ค ๐ ๐ ๐โ๐ฆบ & ๐ โ.
๐ต Pydantic¶
๐ฅ ๐ ๐ซ ๐ โ๏ธ Pydantic ๐ท, ๐ ๐ช โ๏ธ ๐ช ๐ข. ๐ ๐ฉบ ๐ช - ๐ ๐ข: โญ ๐ฒ ๐ช.