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