# ๐จ ๐ช
๐โ ๐ ๐ช ๐จ ๐ โช๏ธโก๏ธ ๐ฉโ๐ป (โก๏ธ ๐ฌ, ๐ฅ) ๐ ๐ ๏ธ, ๐ ๐จ โซ๏ธ **๐จ ๐ช**.
**๐จ** ๐ช ๐ ๐จ ๐ฉโ๐ป ๐ ๐ ๏ธ. **๐จ** ๐ช ๐ฝ ๐ ๐ ๏ธ ๐จ ๐ฉโ๐ป.
๐ ๐ ๏ธ ๐ ๐ง โ๏ธ ๐จ **๐จ** ๐ช. โ๏ธ ๐ฉโ๐ป ๐ซ ๐ฏ ๐ช ๐จ **๐จ** ๐ช ๐ ๐ฐ.
๐ฃ **๐จ** ๐ช, ๐ โ๏ธ Pydantic ๐ท โฎ๏ธ ๐ ๐ซ ๐๏ธ & ๐ฐ.
!!! info
๐จ ๐ฝ, ๐ ๐ โ๏ธ 1๏ธโฃ: `POST` (๐
โ ), `PUT`, `DELETE` โ๏ธ `PATCH`.
๐จ ๐ช โฎ๏ธ `GET` ๐จ โ๏ธ โ ๐ญ ๐ง, ๐, โซ๏ธ ๐โ๐ฆบ FastAPI, ๐ด ๐ถ ๐/๐ โ๏ธ ๐ผ.
โซ๏ธ ๐ซ, ๐ ๐ฉบ โฎ๏ธ ๐ฆ ๐ ๐ ๐ซ ๐ฆ ๐งพ ๐ช ๐โ โ๏ธ `GET`, & ๐ณ ๐ ๐ช ๐ซ ๐โ๐ฆบ โซ๏ธ.
## ๐ Pydantic `BaseModel`
๐ฅ, ๐ ๐ช ๐ `BaseModel` โช๏ธโก๏ธ `pydantic`:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="4"
{!> ../../../docs_src/body/tutorial001.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="2"
{!> ../../../docs_src/body/tutorial001_py310.py!}
```
## โ ๐ ๐ฝ ๐ท
โคด๏ธ ๐ ๐ฃ ๐ ๐ฝ ๐ท ๐ ๐ ๐ โช๏ธโก๏ธ `BaseModel`.
โ๏ธ ๐ฉ ๐ ๐ ๐ ๐ข:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="7-11"
{!> ../../../docs_src/body/tutorial001.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="5-9"
{!> ../../../docs_src/body/tutorial001_py310.py!}
```
๐ ๐โ ๐ฃ ๐ข ๐ข, ๐โ ๐ท ๐ข โ๏ธ ๐ข ๐ฒ, โซ๏ธ ๐ซ โ. โช, โซ๏ธ โ. โ๏ธ `None` โ โซ๏ธ ๐ฆ.
๐ผ, ๐ ๐ท ๐ ๐ฃ ๐ป "`object`" (โ๏ธ ๐ `dict`) ๐:
```JSON
{
"name": "Foo",
"description": "An optional description",
"price": 45.2,
"tax": 3.5
}
```
... `description` & `tax` ๐ฆ (โฎ๏ธ ๐ข ๐ฒ `None`), ๐ ๐ป "`object`" ๐ โ:
```JSON
{
"name": "Foo",
"price": 45.2
}
```
## ๐ฃ โซ๏ธ ๐ข
๐ฎ โซ๏ธ ๐ *โก ๐ ๏ธ*, ๐ฃ โซ๏ธ ๐ ๐ ๐ ๐ฃ โก & ๐ข ๐ข:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="18"
{!> ../../../docs_src/body/tutorial001.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="16"
{!> ../../../docs_src/body/tutorial001_py310.py!}
```
...& ๐ฃ ๐ฎ ๐ ๐ท ๐ โ, `Item`.
## ๐
โฎ๏ธ ๐ ๐ ๐ ๐, **FastAPI** ๐:
* โ ๐ช ๐จ ๐ป.
* ๐ ๐ ๐ (๐ฅ ๐ช).
* โ ๐ฝ.
* ๐ฅ ๐ฝ โ, โซ๏ธ ๐ ๐จ ๐ & ๐ โ, โ ๏ธ โซ๏ธโ ๐โ & โซ๏ธโ โ ๐.
* ๐ค ๐ ๐จ ๐ ๐ข `item`.
* ๐ ๐ฃ โซ๏ธ ๐ข ๐ `Item`, ๐ ๐ โ๏ธ ๐ ๐จโ๐จ ๐โ๐ฆบ (๐ ๏ธ, โ๏ธ) ๐ ๐ข & ๐ซ ๐.
* ๐ ๐ป ๐ ๐ ๐ ๐ท, ๐ ๐ช โ๏ธ ๐ซ ๐ ๐ ๐ ๐ ๐ฅ โซ๏ธ โ ๐ ๐ ๐.
* ๐ ๐ ๐ ๐ ๐ ๐ ๐, & โ๏ธ ๐ง ๐งพ โ.
## ๐ง ๐ฉบ
๐ป ๐ ๐ ๐ท ๐ ๐ ๐ ๐ ๐ ๐, & ๐ ๐ฆ ๐ ๐ ๏ธ ๐ฉบ:
& ๐ โ๏ธ ๐ ๏ธ ๐ฉบ ๐ ๐ *โก ๐ ๏ธ* ๐ ๐ช ๐ซ:
## ๐จโ๐จ ๐โ๐ฆบ
๐ ๐จโ๐จ, ๐ ๐ ๐ข ๐ ๐ ๐ค ๐ ๐ & ๐ ๏ธ ๐ (๐ ๐ซ๐ ๐จ ๐ฅ ๐ ๐จ `dict` โฉ๏ธ Pydantic ๐ท):
๐ ๐ค โ โ
โ ๐ ๐ ๏ธ:
๐ ๐ซ ๐ค, ๐ ๐ ๏ธ ๐ ๐คญ ๐ ๐ง.
& โซ๏ธ ๐ ๐ฏ ๐ง ๐, โญ ๐ ๐ ๏ธ, ๐ โซ๏ธ ๐ ๐ท โฎ๏ธ ๐ ๐จโ๐จ.
๐ค ๐ Pydantic โซ๏ธ ๐โ๐ฆบ ๐.
โฎ๏ธ ๐ผ โ โฎ๏ธ ๐ ๐ ๐.
โ๏ธ ๐ ๐ ๐ค ๐ ๐จโ๐จ ๐โ๐ฆบ โฎ๏ธ ๐ & ๐
๐ ๐ ๐จโ๐จ:
!!! tip
๐ฅ ๐ โ๏ธ ๐ ๐ ๐จโ๐จ, ๐ ๐ช โ๏ธ Pydantic ๐ ๐.
โซ๏ธ ๐ ๐จโ๐จ ๐โ๐ฆบ Pydantic ๐ท, โฎ๏ธ:
* ๐-๐ ๏ธ
* ๐ โ
* ๐ ๏ธ
* ๐
* ๐ฌ
## โ๏ธ ๐ท
๐ ๐ข, ๐ ๐ช ๐ ๐ ๐ข ๐ท ๐ ๐:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="21"
{!> ../../../docs_src/body/tutorial002.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="19"
{!> ../../../docs_src/body/tutorial002_py310.py!}
```
## ๐จ ๐ช โ โก ๐ข
๐ ๐ช ๐ฃ โก ๐ข & ๐จ ๐ช ๐ ๐ฐ.
**FastAPI** ๐ ๐ค ๐ ๐ข ๐ข ๐ ๐ โก ๐ข ๐ **โ โช๏ธโก๏ธ โก**, & ๐ ๐ข ๐ข ๐ ๐ฃ Pydantic ๐ท ๐ **โ โช๏ธโก๏ธ ๐จ ๐ช**.
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="17-18"
{!> ../../../docs_src/body/tutorial003.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="15-16"
{!> ../../../docs_src/body/tutorial003_py310.py!}
```
## ๐จ ๐ช โ โก โ ๐ข ๐ข
๐ ๐ช ๐ฃ **๐ช**, **โก** & **๐ข** ๐ข, ๐ ๐ ๐ฐ.
**FastAPI** ๐ ๐ค ๐ ๐ซ & โ ๐ โช๏ธโก๏ธ โ ๐ฅ.
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="18"
{!> ../../../docs_src/body/tutorial004.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="16"
{!> ../../../docs_src/body/tutorial004_py310.py!}
```
๐ข ๐ข ๐ ๐ค โฉ:
* ๐ฅ ๐ข ๐ฃ **โก**, โซ๏ธ ๐ โ๏ธ โก ๐ข.
* ๐ฅ ๐ข **โญ ๐** (๐ `int`, `float`, `str`, `bool`, โ๏ธ) โซ๏ธ ๐ ๐ฌ **๐ข** ๐ข.
* ๐ฅ ๐ข ๐ฃ ๐ **Pydantic ๐ท**, โซ๏ธ ๐ ๐ฌ ๐จ **๐ช**.
!!! note
FastAPI ๐ ๐ญ ๐ ๐ฒ `q` ๐ซ โ โฉ๏ธ ๐ข ๐ฒ `= None`.
`Union` `Union[str, None]` ๐ซ โ๏ธ FastAPI, โ๏ธ ๐ โ ๐ ๐จโ๐จ ๐ค ๐ ๐ ๐โ๐ฆบ & ๐ โ.
## ๐ต Pydantic
๐ฅ ๐ ๐ซ ๐ โ๏ธ Pydantic ๐ท, ๐ ๐ช โ๏ธ **๐ช** ๐ข. ๐ ๐ฉบ [๐ช - ๐ ๐ข: โญ ๐ฒ ๐ช](body-multiple-params.md#_2){.internal-link target=_blank}.