committed by
GitHub
1 changed files with 68 additions and 0 deletions
@ -0,0 +1,68 @@ |
|||||
|
# ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ ๋ชจ๋ธ |
||||
|
|
||||
|
์ฐ๊ด๋ ์ฟผ๋ฆฌ **๋งค๊ฐ๋ณ์** ๊ทธ๋ฃน์ด ์๋ค๋ฉด **Pydantic ๋ชจ๋ธ** ์ ์ฌ์ฉํด ์ ์ธํ ์ ์์ต๋๋ค. |
||||
|
|
||||
|
์ด๋ ๊ฒ ํ๋ฉด **์ฌ๋ฌ ๊ณณ**์์ **๋ชจ๋ธ์ ์ฌ์ฌ์ฉ**ํ ์ ์์ ๋ฟ๋ง ์๋๋ผ, ๋งค๊ฐ๋ณ์์ ๋ํ ๊ฒ์ฆ ๋ฐ ๋ฉํ๋ฐ์ดํฐ๋ ํ ๋ฒ์ ์ ์ธํ ์ ์์ต๋๋ค. ๐ |
||||
|
|
||||
|
/// note | ์ฐธ๊ณ |
||||
|
|
||||
|
์ด ๊ธฐ๋ฅ์ FastAPI ๋ฒ์ `0.115.0`๋ถํฐ ์ ๊ณต๋ฉ๋๋ค. ๐ค |
||||
|
|
||||
|
/// |
||||
|
|
||||
|
## ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์์ Pydantic ๋ชจ๋ธ |
||||
|
|
||||
|
ํ์ํ **์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์**๋ฅผ **Pydantic ๋ชจ๋ธ** ์์ ์ ์ธํ ๋ค์, ๋ชจ๋ธ์ `Query`๋ก ์ ์ธํฉ๋๋ค. |
||||
|
|
||||
|
{* ../../docs_src/query_param_models/tutorial001_an_py310.py hl[9:13,17] *} |
||||
|
|
||||
|
**FastAPI**๋ ์์ฒญ์ **์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์**์์ **๊ฐ ํ๋**์ ๋ฐ์ดํฐ๋ฅผ **์ถ์ถ**ํด ์ ์ํ Pydantic ๋ชจ๋ธ๋ก ์ ๊ณตํฉ๋๋ค. |
||||
|
|
||||
|
## ๋ฌธ์ ํ์ธํ๊ธฐ |
||||
|
|
||||
|
`/docs` ๊ฒฝ๋ก์ API ๋ฌธ์์์ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. |
||||
|
|
||||
|
<div class="screenshot"> |
||||
|
<img src="/img/tutorial/query-param-models/image01.png"> |
||||
|
</div> |
||||
|
|
||||
|
## ์ถ๊ฐ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ ๊ธ์ง |
||||
|
|
||||
|
๋ช๋ช์ ํน์ดํ ๊ฒฝ์ฐ์ (ํ์น ์์ง๋ง), ํ์ฉํ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ฅผ **์ ํ**ํด์ผํ ์ ์์ต๋๋ค. |
||||
|
|
||||
|
Pydantic ๋ชจ๋ธ ์ค์ ์์ `extra` ํ๋๋ฅผ `forbid` ๋ก ์ค์ ํ ์ ์์ต๋๋ค. |
||||
|
|
||||
|
{* ../../docs_src/query_param_models/tutorial002_an_py310.py hl[10] *} |
||||
|
|
||||
|
๋ง์ฝ ํด๋ผ์ด์ธํธ๊ฐ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ก **์ถ๊ฐ์ ์ธ** ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ค๊ณ ํ๋ฉด, ํด๋ผ์ด์ธํธ๋ **์๋ฌ** ์๋ต์ ๋ฐ๊ฒ ๋ฉ๋๋ค. |
||||
|
|
||||
|
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ด ๋ง์ฝ ํด๋ผ์ด์ธํธ๊ฐ `tool` ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์์ `plumbus` ๋ผ๋ ๊ฐ์ ์ถ๊ฐํด์ ๋ณด๋ด๋ ค๊ณ ํ๋ฉด, |
||||
|
|
||||
|
```http |
||||
|
https://example.com/items/?limit=10&tool=plumbus |
||||
|
``` |
||||
|
|
||||
|
ํด๋ผ์ด์ธํธ๋ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ `tool` ์ด ํ์ฉ๋์ง ์๋๋ค๋ **์๋ฌ** ์๋ต์ ๋ฐ๊ฒ ๋ฉ๋๋ค. |
||||
|
|
||||
|
```json |
||||
|
{ |
||||
|
"detail": [ |
||||
|
{ |
||||
|
"type": "extra_forbidden", |
||||
|
"loc": ["query", "tool"], |
||||
|
"msg": "Extra inputs are not permitted", |
||||
|
"input": "plumbus" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
## ์์ฝ |
||||
|
|
||||
|
**FastAPI** ์์ **์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์** ๋ฅผ ์ ์ธํ ๋ **Pydantic ๋ชจ๋ธ** ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๐ |
||||
|
|
||||
|
/// tip | ํ |
||||
|
|
||||
|
์คํฌ์ผ๋ฌ ๊ฒฝ๊ณ : Pydantic ๋ชจ๋ธ์ ์ฟ ํค์ ํค๋์๋ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด์ ๋ํด์๋ ์ดํ ํํ ๋ฆฌ์ผ์์ ๋ค๋ฃฐ ์์ ์
๋๋ค. ๐คซ |
||||
|
|
||||
|
/// |
Loadingโฆ
Reference in new issue