# โ๏ธ ๐ป
FastAPI ๐ ๐ ๐ **Pydantic**, & ๐ค โ๏ธ ๐ ๐ โ โ๏ธ Pydantic ๐ท ๐ฃ ๐จ & ๐จ.
โ๏ธ FastAPI ๐โ๐ฆบ โ๏ธ `dataclasses` ๐ ๐:
```Python hl_lines="1 7-12 19-20"
{!../../docs_src/dataclasses/tutorial001.py!}
```
๐ ๐โ๐ฆบ ๐ **Pydantic**, โซ๏ธ โ๏ธ ๐ ๐โ๐ฆบ `dataclasses`.
, โฎ๏ธ ๐ ๐ ๐ ๐ซ โ๏ธ Pydantic ๐ฏ, FastAPI โ๏ธ Pydantic ๐ ๐ ๐ฉ ๐ป Pydantic ๐ ๐ ๐ป.
& โ๏ธ, โซ๏ธ ๐โ๐ฆบ ๐:
* ๐ฝ ๐ฌ
* ๐ฝ ๐ ๏ธ
* ๐ฝ ๐งพ, โ๏ธ.
๐ ๐ท ๐ ๐ โฎ๏ธ Pydantic ๐ท. & โซ๏ธ ๐ค ๐ ๐ ๐ ๐, โ๏ธ Pydantic.
/// info
โ๏ธ ๐คฏ ๐ ๐ป ๐ช ๐ซ ๐ Pydantic ๐ท ๐ช.
, ๐ 5๏ธโฃ๐ ๐ช โ๏ธ Pydantic ๐ท.
โ๏ธ ๐ฅ ๐ โ๏ธ ๐ ๐ป ๐คฅ ๐คญ, ๐ ๐ ๐ฑ โ๏ธ ๐ซ ๐๏ธ ๐ธ ๐ ๏ธ โ๏ธ FastAPI. ๐ถ
///
## ๐ป `response_model`
๐ ๐ช โ๏ธ `dataclasses` `response_model` ๐ข:
```Python hl_lines="1 7-13 19"
{!../../docs_src/dataclasses/tutorial002.py!}
```
๐ป ๐ ๐ ๐ Pydantic ๐ป.
๐ ๐, ๐ฎ ๐ ๐ ๐ฆ ๐ ๐ ๏ธ ๐ฉบ ๐ฉโ๐ป ๐ข:
## ๐ป ๐ ๐ ๐
๐ ๐ช ๐ `dataclasses` โฎ๏ธ ๐ ๐ โ โ ๐ฆ ๐ ๐.
๐ผ, ๐ ๐ช โ๏ธ โ๏ธ Pydantic โฌ `dataclasses`. ๐ผ, ๐ฅ ๐ โ๏ธ โ โฎ๏ธ ๐ ๐ ๐ ๏ธ ๐งพ.
๐ ๐ผ, ๐ ๐ช ๐ฏ ๐ฑ ๐ฉ `dataclasses` โฎ๏ธ `pydantic.dataclasses`, โ ๐ง-โป:
```{ .python .annotate hl_lines="1 5 8-11 14-17 23-25 28" }
{!../../docs_src/dataclasses/tutorial003.py!}
```
1๏ธโฃ. ๐ฅ ๐ `field` โช๏ธโก๏ธ ๐ฉ `dataclasses`.
2๏ธโฃ. `pydantic.dataclasses` ๐ง-โป `dataclasses`.
3๏ธโฃ. `Author` ๐ป ๐ ๐ `Item` ๐ป.
4๏ธโฃ. `Author` ๐ป โ๏ธ `response_model` ๐ข.
5๏ธโฃ. ๐ ๐ช โ๏ธ ๐ ๐ฉ ๐ โ โฎ๏ธ ๐ป ๐จ ๐ช.
๐ ๐ผ, โซ๏ธ ๐ `Item` ๐ป.
6๏ธโฃ. ๐ฅ ๐ฅ ๐ฌ ๐ ๐ ๐ `items` โ ๐ ๐ป.
FastAPI ๐ฏ โ ๐ฝ ๐ป.
7๏ธโฃ. ๐ฅ `response_model` โ๏ธ ๐ โ ๐ `Author` ๐ป.
๐, ๐ ๐ช ๐ `dataclasses` โฎ๏ธ ๐ฉ ๐ โ.
8๏ธโฃ. ๐ ๐ ๐ *โก ๐ ๏ธ ๐ข* โ๏ธ ๐ฅ `def` โฉ๏ธ `async def`.
๐ง, FastAPI ๐ ๐ช ๐ `def` & `async def` ๐ช.
๐ฅ ๐ ๐ช โ๏ธ ๐ ๐โ โ๏ธ โ, โ
๐
๐ _"๐ โ" _ ๐ฉบ ๐ `async` & `await`.
9๏ธโฃ. ๐ *โก ๐ ๏ธ ๐ข* ๐ซ ๐ฌ ๐ป (๐ โซ๏ธ ๐ช), โ๏ธ ๐ ๐ โฎ๏ธ ๐ ๐ฝ.
FastAPI ๐ โ๏ธ `response_model` ๐ข (๐ ๐ ๐ป) ๐ ๐จ.
๐ ๐ช ๐ `dataclasses` โฎ๏ธ ๐ ๐ โ ๐ ๐ ๐ ๐จ ๐ ๐ ๐.
โ
-๐ โ ๐โโ ๐ ๐ ๐
๐ฏ โน.
## ๐ก ๐
๐ ๐ช ๐ `dataclasses` โฎ๏ธ ๐ Pydantic ๐ท, ๐ โช๏ธโก๏ธ ๐ซ, ๐ ๐ซ ๐ ๐ ๐ท, โ๏ธ.
๐ก ๐
, โ
Pydantic ๐ฉบ ๐ ๐ป.
## โฌ
๐ ๐ช โฉ๏ธ FastAPI โฌ `0.67.0`. ๐ถ