committed by
GitHub
1 changed files with 76 additions and 0 deletions
@ -0,0 +1,76 @@ |
|||
# ์ฟ ํค ๋งค๊ฐ๋ณ์ ๋ชจ๋ธ |
|||
|
|||
๊ด๋ จ์๋ **์ฟ ํค**๋ค์ ๊ทธ๋ฃน์ด ์๋ ๊ฒฝ์ฐ, **Pydantic ๋ชจ๋ธ**์ ์์ฑํ์ฌ ์ ์ธํ ์ ์์ต๋๋ค. ๐ช |
|||
|
|||
์ด๋ฅผ ํตํด **์ฌ๋ฌ ์์น**์์ **๋ชจ๋ธ์ ์ฌ์ฌ์ฉ** ํ ์ ์๊ณ ๋ชจ๋ ๋งค๊ฐ๋ณ์์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์ ์ธํ ์๋ ์์ต๋๋ค. ๐ |
|||
|
|||
/// note | ์ฐธ๊ณ |
|||
|
|||
์ด ๊ธฐ๋ฅ์ FastAPI ๋ฒ์ `0.115.0` ์ดํ๋ถํฐ ์ง์๋ฉ๋๋ค. ๐ค |
|||
|
|||
/// |
|||
|
|||
/// tip | ํ |
|||
|
|||
๋์ผํ ๊ธฐ์ ์ด `Query`, `Cookie`, ๊ทธ๋ฆฌ๊ณ `Header`์ ์ ์ฉ๋ฉ๋๋ค. ๐ |
|||
|
|||
/// |
|||
|
|||
## Pydantic ๋ชจ๋ธ์ ์ฌ์ฉํ ์ฟ ํค |
|||
|
|||
**Pydantic ๋ชจ๋ธ**์ ํ์ํ **์ฟ ํค** ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ธํ ๋ค์, ํด๋น ๋งค๊ฐ๋ณ์๋ฅผ `Cookie`๋ก ์ ์ธํฉ๋๋ค: |
|||
|
|||
{* ../../docs_src/cookie_param_models/tutorial001_an_py310.py hl[9:12,16] *} |
|||
|
|||
**FastAPI**๋ ์์ฒญ์์ ๋ฐ์ **์ฟ ํค**์์ **๊ฐ ํ๋**์ ๋ํ ๋ฐ์ดํฐ๋ฅผ **์ถ์ถ**ํ๊ณ ์ ์ํ Pydantic ๋ชจ๋ธ์ ์ค๋๋ค. |
|||
|
|||
## ๋ฌธ์ ํ์ธํ๊ธฐ |
|||
|
|||
๋ฌธ์ UI `/docs`์์ ์ ์ํ ์ฟ ํค๋ฅผ ๋ณผ ์ ์์ต๋๋ค: |
|||
|
|||
<div class="screenshot"> |
|||
<img src="/img/tutorial/cookie-param-models/image01.png"> |
|||
</div> |
|||
|
|||
/// info | ์ ๋ณด |
|||
|
|||
๋ช
์ฌํ์ธ์, ๋ด๋ถ์ ์ผ๋ก **๋ธ๋ผ์ฐ์ ๋ ์ฟ ํค๋ฅผ ํน๋ณํ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ**ํ๊ธฐ ๋๋ฌธ์ **์๋ฐ์คํฌ๋ฆฝํธ**๊ฐ ์ฝ๊ฒ ์ฟ ํค๋ฅผ ๊ฑด๋๋ฆด ์ **์์ต๋๋ค**. |
|||
|
|||
`/docs`์์ **API ๋ฌธ์ UI**๋ก ์ด๋ํ๋ฉด *๊ฒฝ๋ก ์์
*์ ๋ํ ์ฟ ํค์ **๋ฌธ์**๋ฅผ ๋ณผ ์ ์์ต๋๋ค. |
|||
|
|||
ํ์ง๋ง ์๋ฌด๋ฆฌ **๋ฐ์ดํฐ๋ฅผ ์
๋ ฅ**ํ๊ณ "์คํ(Execute)"์ ํด๋ฆญํด๋, ๋ฌธ์ UI๋ **์๋ฐ์คํฌ๋ฆฝํธ**๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ์ฟ ํค๋ ์ ์ก๋์ง ์๊ณ , ์๋ฌด ๊ฐ๋ ์ฐ์ง ์์ ๊ฒ์ฒ๋ผ **์ค๋ฅ** ๋ฉ์์ง๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค. |
|||
|
|||
/// |
|||
|
|||
## ์ถ๊ฐ ์ฟ ํค ๊ธ์งํ๊ธฐ |
|||
|
|||
์ผ๋ถ ํน๋ณํ ์ฌ์ฉ ์ฌ๋ก(ํํ์ง๋ ์๊ฒ ์ง๋ง)์์๋ ์์ ํ๋ ค๋ ์ฟ ํค๋ฅผ **์ ํ**ํ ์ ์์ต๋๋ค. |
|||
|
|||
์ด์ API๋ ์์ ์ <abbr title="๋๋ด์
๋๋ค, ํน์๋ ํด์์. ์ฟ ํค ๋์์ ๊ด๋ จํด์ ํ ์ ์๋ ๊ฒ์ ์์ง๋ง, ์ด์ API์กฐ์ฐจ๋ ์๋ชป๋ ์ฟ ํค๋ฅผ ๊ฑฐ๋ถํ ์ ์๋ค๋ ์ ์ด ์ฌ๋ฐ์ต๋๋ค. ์ฟ ํค ๋์ธ์. ๐ช">์ฟ ํค ๋์</abbr>๋ฅผ ์ ์ดํ ์ ์๋ ๊ถํ์ ๊ฐ๊ฒ ๋์์ต๋๋ค. ๐คช๐ช |
|||
|
|||
Pydantic์ ๋ชจ๋ธ ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ์ถ๊ฐ(`extra`) ํ๋๋ฅผ ๊ธ์ง(`forbid`)ํ ์ ์์ต๋๋ค: |
|||
|
|||
{* ../../docs_src/cookie_param_models/tutorial002_an_py39.py hl[10] *} |
|||
|
|||
ํด๋ผ์ด์ธํธ๊ฐ **์ถ๊ฐ ์ฟ ํค**๋ฅผ ๋ณด๋ด๋ ค๊ณ ์๋ํ๋ฉด, **์ค๋ฅ** ์๋ต์ ๋ฐ๊ฒ ๋ฉ๋๋ค. |
|||
|
|||
<abbr title="์ด๊ฑด ๋ ๋ค๋ฅธ ๋๋ด์
๋๋ค. ์ ๋ง์ ๊ท ๊ธฐ์ธ์ด์ง ๋ง์ธ์. ์ปคํผ๋ ์ฟ ํค ์ข ๋์ธ์. โ">API๊ฐ ๊ฑฐ๋ถ</abbr>ํ๋๋ฐ๋ ๋์๋ฅผ ์ป๊ธฐ ์ํด ์ ์ฐ๋ ๋ถ์ํ ์ฟ ํค ๋ฐฐ๋(ํ์
)๋ค. ๐ช |
|||
|
|||
์๋ฅผ ๋ค์ด, ํด๋ผ์ด์ธํธ๊ฐ `good-list-please` ๊ฐ์ผ๋ก `santa_tracker` ์ฟ ํค๋ฅผ ๋ณด๋ด๋ ค๊ณ ํ๋ฉด ํด๋ผ์ด์ธํธ๋ `santa_tracker` <abbr title="์ฐํ๋ ์ฟ ํค๊ฐ ๋ถ์กฑํ ๊ฒ์ ๋ชป๋ง๋
ํดํฉ๋๋ค. ๐
์๊ฒ ์ต๋๋ค, ์ฟ ํค ๋๋ด์ ์ด์ ์์ต๋๋ค.">์ฟ ํค๊ฐ ํ์ฉ๋์ง ์๋๋ค</abbr>๋ **์ค๋ฅ** ์๋ต์ ๋ฐ๊ฒ ๋ฉ๋๋ค: |
|||
|
|||
```json |
|||
{ |
|||
"detail": [ |
|||
{ |
|||
"type": "extra_forbidden", |
|||
"loc": ["cookie", "santa_tracker"], |
|||
"msg": "Extra inputs are not permitted", |
|||
"input": "good-list-please", |
|||
} |
|||
] |
|||
} |
|||
``` |
|||
|
|||
## ์์ฝ |
|||
|
|||
**Pydantic ๋ชจ๋ธ**์ ์ฌ์ฉํ์ฌ **FastAPI**์์ <abbr title="๊ฐ๊ธฐ ์ ์ ๋ง์ง๋ง ์ฟ ํค๋ฅผ ๋์ธ์. ๐ช">**์ฟ ํค**</abbr>๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค. ๐ |
Loadingโฆ
Reference in new issue