Skip to content

Commit

Permalink
๐ŸŒ Add Korean translation for `docs/ko/docs/tutorial/body-multiple-parโ€ฆ
Browse files Browse the repository at this point in the history
โ€ฆams.md` (#2461)
  • Loading branch information
PandaHun committed Jan 22, 2024
1 parent 87a4c9e commit 83944b9
Showing 1 changed file with 170 additions and 0 deletions.
170 changes: 170 additions & 0 deletions docs/ko/docs/tutorial/body-multiple-params.md
Original file line number Diff line number Diff line change
@@ -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**๋Š” ๋‹จ ํ•œ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ ๋˜๋”๋ผ๋„, ๋ณธ๋ฌธ ๋‚ด์˜ ํ‚ค๋กœ ์‚ฝ์ž… ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

0 comments on commit 83944b9

Please sign in to comment.