committed by
GitHub
1 changed files with 170 additions and 0 deletions
@ -0,0 +1,170 @@ |
|||
# ๋ณธ๋ฌธ - ๋ค์ค ๋งค๊ฐ๋ณ์ |
|||
|
|||
์ง๊ธ๋ถํฐ `Path`์ `Query`๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ํ์ธํ๊ฒ ์ต๋๋ค. |
|||
|
|||
์์ฒญ ๋ณธ๋ฌธ ์ ์ธ์ ๋ํ ์ฌํ ์ฌ์ฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค. |
|||
|
|||
## `Path`, `Query` ๋ฐ ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์ ํผํฉ |
|||
|
|||
๋น์ฐํ๊ฒ `Path`, `Query` ๋ฐ ์์ฒญ ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์ ์ ์ธ์ ์์ ๋กญ๊ฒ ํผํฉํด์ ์ฌ์ฉํ ์ ์๊ณ , **FastAPI**๋ ์ด๋ค ๋์์ ํ ์ง ์๋๋ค. |
|||
|
|||
๋ํ, ๊ธฐ๋ณธ ๊ฐ์ `None`์ผ๋ก ์ค์ ํด ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์๋ฅผ ์ ํ์ฌํญ์ผ๋ก ์ ์ธํ ์ ์์ต๋๋ค. |
|||
|
|||
```Python hl_lines="19-21" |
|||
{!../../../docs_src/body_multiple_params/tutorial001.py!} |
|||
``` |
|||
|
|||
!!! note "์ฐธ๊ณ " |
|||
์ด ๊ฒฝ์ฐ์๋ ๋ณธ๋ฌธ์ผ๋ก ๋ถํฐ ๊ฐ์ ธ์จ ` item`์ ๊ธฐ๋ณธ๊ฐ์ด `None`์ด๊ธฐ ๋๋ฌธ์, ์ ํ์ฌํญ์ด๋ผ๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค. |
|||
|
|||
## ๋ค์ค ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์ |
|||
|
|||
์ด์ ์์ ์์ ๋ณด๋ฏ์ด, *๊ฒฝ๋ก ๋์*์ ์๋์ ๊ฐ์ด `Item` ์์ฑ์ ๊ฐ์ง JSON ๋ณธ๋ฌธ์ ์์ํฉ๋๋ค: |
|||
|
|||
```JSON |
|||
{ |
|||
"name": "Foo", |
|||
"description": "The pretender", |
|||
"price": 42.0, |
|||
"tax": 3.2 |
|||
} |
|||
``` |
|||
|
|||
ํ์ง๋ง, ๋ค์ค ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์ ์ญ์ ์ ์ธํ ์ ์์ต๋๋ค. ์. `item`๊ณผ `user`: |
|||
|
|||
```Python hl_lines="22" |
|||
{!../../../docs_src/body_multiple_params/tutorial002.py!} |
|||
``` |
|||
|
|||
์ด ๊ฒฝ์ฐ์, **FastAPI**๋ ์ด ํจ์ ์์ ํ ๊ฐ ์ด์์ ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์(Pydantic ๋ชจ๋ธ์ธ ๋ ๋งค๊ฐ๋ณ์)๊ฐ ์๋ค๊ณ ์ ๊ฒ์
๋๋ค. |
|||
|
|||
๊ทธ๋์, ๋ณธ๋ฌธ์ ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ ํค(ํ๋ ๋ช
)๋ก ์ฌ์ฉํ ์ ์๊ณ , ๋ค์๊ณผ ๊ฐ์ ๋ณธ๋ฌธ์ ์์ธกํฉ๋๋ค: |
|||
|
|||
```JSON |
|||
{ |
|||
"item": { |
|||
"name": "Foo", |
|||
"description": "The pretender", |
|||
"price": 42.0, |
|||
"tax": 3.2 |
|||
}, |
|||
"user": { |
|||
"username": "dave", |
|||
"full_name": "Dave Grohl" |
|||
} |
|||
} |
|||
``` |
|||
|
|||
!!! note "์ฐธ๊ณ " |
|||
์ด์ ๊ณผ ๊ฐ์ด `item`์ด ์ ์ธ ๋์๋๋ผ๋, ๋ณธ๋ฌธ ๋ด์ `item` ํค๊ฐ ์์ ๊ฒ์ด๋ผ๊ณ ์์ธกํฉ๋๋ค. |
|||
|
|||
FastAPI๋ ์์ฒญ์ ์๋์ผ๋ก ๋ณํํด, ๋งค๊ฐ๋ณ์์ `item`๊ณผ `user`๋ฅผ ํน๋ณํ ๋ด์ฉ์ผ๋ก ๋ฐ๋๋ก ํ ๊ฒ์
๋๋ค. |
|||
|
|||
๋ณตํฉ ๋ฐ์ดํฐ์ ๊ฒ์ฆ์ ์ํํ๊ณ OpenAPI ์คํค๋ง ๋ฐ ์๋ ๋ฌธ์๋ฅผ ๋ฌธ์ํํฉ๋๋ค. |
|||
|
|||
## ๋ณธ๋ฌธ ๋ด์ ๋จ์ผ ๊ฐ |
|||
|
|||
์ฟผ๋ฆฌ ๋ฐ ๊ฒฝ๋ก ๋งค๊ฐ๋ณ์์ ๋ํ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๋ `Query`์ `Path`์ ๊ฐ์ด, **FastAPI**๋ ๋๋ฑํ `Body`๋ฅผ ์ ๊ณตํฉ๋๋ค. |
|||
|
|||
์๋ฅผ ๋ค์ด ์ด์ ์ ๋ชจ๋ธ์ ํ์ฅํ๋ฉด, `item`๊ณผ `user`์ ๋์ผํ ๋ณธ๋ฌธ์ ๋ ๋ค๋ฅธ `importance`๋ผ๋ ํค๋ฅผ ๊ฐ๋๋ก ํ ์์์ต๋๋ค. |
|||
|
|||
๋จ์ผ ๊ฐ์ ๊ทธ๋๋ก ์ ์ธํ๋ค๋ฉด, **FastAPI**๋ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ ํ ๊ฒ์
๋๋ค. |
|||
|
|||
ํ์ง๋ง, **FastAPI**์ `Body`๋ฅผ ์ฌ์ฉํด ๋ค๋ฅธ ๋ณธ๋ฌธ ํค๋ก ์ฒ๋ฆฌํ๋๋ก ์ ์ดํ ์ ์์ต๋๋ค: |
|||
|
|||
|
|||
```Python hl_lines="23" |
|||
{!../../../docs_src/body_multiple_params/tutorial003.py!} |
|||
``` |
|||
|
|||
์ด ๊ฒฝ์ฐ์๋ **FastAPI**๋ ๋ณธ๋ฌธ์ ์ด์ ๊ฐ์ด ์์ธกํ ๊ฒ์
๋๋ค: |
|||
|
|||
|
|||
```JSON |
|||
{ |
|||
"item": { |
|||
"name": "Foo", |
|||
"description": "The pretender", |
|||
"price": 42.0, |
|||
"tax": 3.2 |
|||
}, |
|||
"user": { |
|||
"username": "dave", |
|||
"full_name": "Dave Grohl" |
|||
}, |
|||
"importance": 5 |
|||
} |
|||
``` |
|||
|
|||
๋ค์ ๋งํด, ๋ฐ์ดํฐ ํ์
, ๊ฒ์ฆ, ๋ฌธ์ ๋ฑ์ ๋ณํํฉ๋๋ค. |
|||
|
|||
## ๋ค์ค ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์์ ์ฟผ๋ฆฌ |
|||
|
|||
๋น์ฐํ, ํ์ํ ๋๋ง๋ค ์ถ๊ฐ์ ์ธ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ธํ ์ ์๊ณ , ์ด๋ ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์์ ์ถ๊ฐ๋ฉ๋๋ค. |
|||
|
|||
๊ธฐ๋ณธ์ ์ผ๋ก ๋จ์ผ ๊ฐ์ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ก ํด์๋๋ฏ๋ก, ๋ช
์์ ์ผ๋ก `Query`๋ฅผ ์ถ๊ฐํ ํ์๊ฐ ์๊ณ , ์๋์ฒ๋ผ ํ ์ ์์ต๋๋ค: |
|||
|
|||
```Python hl_lines="27" |
|||
{!../../../docs_src/body_multiple_params/tutorial004.py!} |
|||
``` |
|||
|
|||
์ด๋ ๊ฒ: |
|||
|
|||
```Python |
|||
q: Optional[str] = None |
|||
``` |
|||
|
|||
!!! info "์ ๋ณด" |
|||
`Body` ๋ํ `Query`, `Path` ๊ทธ๋ฆฌ๊ณ ์ดํ์ ๋ณผ ๋ค๋ฅธ ๊ฒ๋ค์ฒ๋ผ ๋์ผํ ์ถ๊ฐ ๊ฒ์ฆ๊ณผ ๋ฉํ๋ฐ์ดํฐ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค. |
|||
|
|||
## ๋จ์ผ ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์ ์ฝ์
ํ๊ธฐ |
|||
|
|||
Pydantic ๋ชจ๋ธ `Item`์ `item`์ ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์๋ก ์ค์ง ํ๊ฐ๋ง ๊ฐ๊ณ ์๋ค๊ณ ํ๊ฒ ์ต๋๋ค. |
|||
|
|||
๊ธฐ๋ณธ์ ์ผ๋ก **FastAPI**๋ ์ง์ ๋ณธ๋ฌธ์ผ๋ก ์์ธกํ ๊ฒ์
๋๋ค. |
|||
|
|||
ํ์ง๋ง, ๋ง์ฝ ๋ชจ๋ธ ๋ด์ฉ์ `item `ํค๋ฅผ ๊ฐ์ง JSON์ผ๋ก ์์ธกํ๊ธธ ์ํ๋ค๋ฉด, ์ถ๊ฐ์ ์ธ ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ธํ ๊ฒ์ฒ๋ผ `Body`์ ํน๋ณํ ๋งค๊ฐ๋ณ์์ธ `embed`๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค: |
|||
|
|||
```Python hl_lines="17" |
|||
{!../../../docs_src/body_multiple_params/tutorial005.py!} |
|||
``` |
|||
|
|||
์๋ ์ฒ๋ผ: |
|||
|
|||
```Python |
|||
item: Item = Body(..., embed=True) |
|||
``` |
|||
|
|||
์ด ๊ฒฝ์ฐ์ **FastAPI**๋ ๋ณธ๋ฌธ์ ์๋ ๋์ ์: |
|||
|
|||
```JSON hl_lines="2" |
|||
{ |
|||
"name": "Foo", |
|||
"description": "The pretender", |
|||
"price": 42.0, |
|||
"tax": 3.2 |
|||
} |
|||
``` |
|||
|
|||
์๋ ์ฒ๋ผ ์์ธกํ ๊ฒ ์
๋๋ค: |
|||
|
|||
```JSON |
|||
{ |
|||
"item": { |
|||
"name": "Foo", |
|||
"description": "The pretender", |
|||
"price": 42.0, |
|||
"tax": 3.2 |
|||
} |
|||
} |
|||
``` |
|||
|
|||
## ์ ๋ฆฌ |
|||
|
|||
์์ฒญ์ด ๋จ ํ๊ฐ์ ๋ณธ๋ฌธ์ ๊ฐ์ง๊ณ ์๋๋ผ๋, *๊ฒฝ๋ก ๋์ ํจ์*๋ก ๋ค์ค ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. |
|||
|
|||
ํ์ง๋ง, **FastAPI**๋ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ณ , ํจ์์ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ฉฐ, *๊ฒฝ๋ก ๋์*์ผ๋ก ์ฌ๋ฐ๋ฅธ ์คํค๋ง๋ฅผ ๊ฒ์ฆํ๊ณ ๋ฌธ์ํ ํฉ๋๋ค. |
|||
|
|||
๋ํ, ๋จ์ผ ๊ฐ์ ๋ณธ๋ฌธ์ ์ผ๋ถ๋ก ๋ฐ๋๋ก ์ ์ธํ ์ ์์ต๋๋ค. |
|||
|
|||
๊ทธ๋ฆฌ๊ณ **FastAPI**๋ ๋จ ํ๊ฐ์ ๋งค๊ฐ๋ณ์๊ฐ ์ ์ธ ๋๋๋ผ๋, ๋ณธ๋ฌธ ๋ด์ ํค๋ก ์ฝ์
์ํฌ ์ ์์ต๋๋ค. |
Loadingโฆ
Reference in new issue