Browse Source

๐ŸŒ Update Korean translation for `docs/ko/docs/tutorial/first-steps.md`, `docs/ko/docs/tutorial/index.md`, `docs/ko/docs/tutorial/path-params.md`, and `docs/ko/docs/tutorial/query-params.md` (#4218)

pull/11085/head
Soonho Kwon 1 year ago
committed by GitHub
parent
commit
d254e2f6ad
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 90
      docs/ko/docs/tutorial/first-steps.md
  2. 27
      docs/ko/docs/tutorial/index.md
  3. 72
      docs/ko/docs/tutorial/path-params.md
  4. 16
      docs/ko/docs/tutorial/query-params.md

90
docs/ko/docs/tutorial/first-steps.md

@ -1,12 +1,12 @@
# ์ฒซ๊ฑธ์Œ
๊ฐ€์žฅ ๋‹จ์ˆœํ•œ FastAPI ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ๊ฒ๋‹ˆ๋‹ค:
๊ฐ€์žฅ ๋‹จ์ˆœํ•œ FastAPI ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค:
```Python
{!../../../docs_src/first_steps/tutorial001.py!}
```
์œ„๋ฅผ `main.py`์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
์œ„ ์ฝ”๋“œ๋ฅผ `main.py`์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋ผ์ด๋ธŒ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:
@ -29,9 +29,9 @@ $ uvicorn main:app --reload
* `main`: ํŒŒ์ผ `main.py` (ํŒŒ์ด์ฌ "๋ชจ๋“ˆ").
* `app`: `main.py` ๋‚ด๋ถ€์˜ `app = FastAPI()` ์ค„์—์„œ ์ƒ์„ฑํ•œ ์˜ค๋ธŒ์ ํŠธ.
* `--reload`: ์ฝ”๋“œ ๋ณ€๊ฒฝ ํ›„ ์„œ๋ฒ„ ์žฌ์‹œ์ž‘. ๊ฐœ๋ฐœ์—๋งŒ ์‚ฌ์šฉ.
* `--reload`: ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ์ž๋™์œผ๋กœ ์„œ๋ฒ„ ์žฌ์‹œ์ž‘. ๊ฐœ๋ฐœ ์‹œ์—๋งŒ ์‚ฌ์šฉ.
์ถœ๋ ฅ์— ์•„๋ž˜์™€ ๊ฐ™์€ ์ค„์ด ์žˆ์Šต๋‹ˆ๋‹ค:
์ถœ๋ ฅ๋˜๋Š” ์ค„๋“ค ์ค‘์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค:
```hl_lines="4"
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
@ -75,7 +75,7 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
#### API "์Šคํ‚ค๋งˆ"
์ด ๊ฒฝ์šฐ, <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a>๋Š” API์˜ ์Šคํ‚ค๋งˆ๋ฅผ ์–ด๋–ป๊ฒŒ ์ •์˜ํ•˜๋Š”์ง€ ์ง€์‹œํ•˜๋Š” ๊ทœ๊ฒฉ์ž…๋‹ˆ๋‹ค.
<a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a>๋Š” API์˜ ์Šคํ‚ค๋งˆ๋ฅผ ์–ด๋–ป๊ฒŒ ์ •์˜ํ•˜๋Š”์ง€ ์ง€์‹œํ•˜๋Š” ๊ทœ๊ฒฉ์ž…๋‹ˆ๋‹ค.
์ด ์Šคํ‚ค๋งˆ ์ •์˜๋Š” API ๊ฒฝ๋กœ, ๊ฐ€๋Šฅํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋“ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
@ -87,13 +87,13 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
#### OpenAPI์™€ JSON ์Šคํ‚ค๋งˆ
OpenAPI๋Š” API์— ๋Œ€ํ•œ API ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์Šคํ‚ค๋งˆ์—๋Š” JSON ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ์˜ ํ‘œ์ค€์ธ **JSON ์Šคํ‚ค๋งˆ**๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ API์—์„œ ๋ณด๋‚ด๊ณ  ๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ์ •์˜(๋˜๋Š” "์Šคํ‚ค๋งˆ")๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
OpenAPI๋Š” ๋‹น์‹ ์˜ API์— ๋Œ€ํ•œ API ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์Šคํ‚ค๋งˆ๋Š” JSON ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ์˜ ํ‘œ์ค€์ธ **JSON ์Šคํ‚ค๋งˆ**๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹น์‹ ์˜ API๊ฐ€ ๋ณด๋‚ด๊ณ  ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ์˜ ์ •์˜(๋˜๋Š” "์Šคํ‚ค๋งˆ")๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
#### `openapi.json` ํ™•์ธ
๊ฐ€๊ณต๋˜์ง€ ์•Š์€ OpenAPI ์Šคํ‚ค๋งˆ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด, FastAPI๋Š” ์ž๋™์œผ๋กœ API์˜ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ JSON (์Šคํ‚ค๋งˆ)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
FastAPI๋Š” ์ž๋™์œผ๋กœ API์˜ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ JSON (์Šคํ‚ค๋งˆ)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์—์„œ ์ง์ ‘ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: <a href="http://127.0.0.1:8000/openapi.json" class="external-link" target="_blank">http://127.0.0.1:8000/openapi.json</a>.
๊ฐ€๊ณต๋˜์ง€ ์•Š์€ OpenAPI ์Šคํ‚ค๋งˆ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด, ์—ฌ๊ธฐ์—์„œ ์ง์ ‘ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: <a href="http://127.0.0.1:8000/openapi.json" class="external-link" target="_blank">http://127.0.0.1:8000/openapi.json</a>.
๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œ์ž‘ํ•˜๋Š” JSON์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
@ -124,7 +124,7 @@ OpenAPI ์Šคํ‚ค๋งˆ๋Š” ํฌํ•จ๋œ ๋‘ ๊ฐœ์˜ ๋Œ€ํ™”ํ˜• ๋ฌธ์„œ ์‹œ์Šคํ…œ์„ ์ œ๊ณต
๊ทธ๋ฆฌ๊ณ  OpenAPI์˜ ๋ชจ๋“  ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ˆ˜์‹ญ ๊ฐ€์ง€ ๋Œ€์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. **FastAPI**๋กœ ๋นŒ๋“œํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ด๋Ÿฌํ•œ ๋Œ€์•ˆ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
API์™€ ํ†ต์‹ ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋กœ ํ”„๋ก ํŠธ์—”๋“œ, ๋ชจ๋ฐ”์ผ, IoT ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
API์™€ ํ†ต์‹ ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ(ํ”„๋ก ํŠธ์—”๋“œ, ๋ชจ๋ฐ”์ผ, IoT ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ)๋ฅผ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
## ๋‹จ๊ณ„๋ณ„ ์š”์•ฝ
@ -134,7 +134,7 @@ API์™€ ํ†ต์‹ ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜
{!../../../docs_src/first_steps/tutorial001.py!}
```
`FastAPI`๋Š” API์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํŒŒ์ด์ฌ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
`FastAPI`๋Š” ๋‹น์‹ ์˜ API๋ฅผ ์œ„ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํŒŒ์ด์ฌ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
!!! note "๊ธฐ์ˆ  ์„ธ๋ถ€์‚ฌํ•ญ"
`FastAPI`๋Š” `Starlette`๋ฅผ ์ง์ ‘ ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
@ -147,11 +147,11 @@ API์™€ ํ†ต์‹ ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜
{!../../../docs_src/first_steps/tutorial001.py!}
```
์—ฌ๊ธฐ ์žˆ๋Š” `app` ๋ณ€์ˆ˜๋Š” `FastAPI` ํด๋ž˜์Šค์˜ "์ธ์Šคํ„ด์Šค"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์—์„œ `app` ๋ณ€์ˆ˜๋Š” `FastAPI` ํด๋ž˜์Šค์˜ "์ธ์Šคํ„ด์Šค"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋ชจ๋“  API๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ƒํ˜ธ์ž‘์šฉ์˜ ์ฃผ์š” ์ง€์ ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋‹น์‹ ์˜ ๋ชจ๋“  API๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ƒํ˜ธ์ž‘์šฉ์˜ ์ฃผ์š” ์ง€์ ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด `app`์€ ๋‹ค์Œ ๋ช…๋ น์—์„œ `uvicorn`์ด ์ฐธ์กฐํ•˜๊ณ  ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค:
์ด `app`์€ ๋‹ค์Œ ๋ช…๋ น์—์„œ `uvicorn`์ด ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค:
<div class="termy">
@ -181,11 +181,11 @@ $ uvicorn main:my_awesome_api --reload
</div>
### 3 ๋‹จ๊ณ„: *๊ฒฝ๋กœ ๋™์ž‘* ์ƒ์„ฑ
### 3 ๋‹จ๊ณ„: *๊ฒฝ๋กœ ์ž‘๋™* ์ƒ์„ฑ
#### ๊ฒฝ๋กœ
์—ฌ๊ธฐ์„œ "๊ฒฝ๋กœ"๋Š” ์ฒซ ๋ฒˆ์งธ `/`์—์„œ ์‹œ์ž‘ํ•˜๋Š” URL์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ "๊ฒฝ๋กœ"๋Š” ์ฒซ ๋ฒˆ์งธ `/`๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” URL์˜ ๋’ท๋ถ€๋ถ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฏ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ URL์—์„œ:
@ -200,13 +200,13 @@ https://example.com/items/foo
```
!!! info "์ •๋ณด"
"๊ฒฝ๋กœ"๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ "์•ค๋“œํฌ์ธํŠธ" ๋˜๋Š” "๋ผ์šฐํŠธ"๋ผ๊ณ ๋„ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.
"๊ฒฝ๋กœ"๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ "์—”๋“œํฌ์ธํŠธ" ๋˜๋Š” "๋ผ์šฐํŠธ"๋ผ๊ณ ๋„ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.
API๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ "๊ฒฝ๋กœ"๋Š” "๊ด€์‹ฌ์‚ฌ"์™€ "๋ฆฌ์†Œ์Šค"๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์ฃผ์š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ "๊ฒฝ๋กœ"๋Š” "๊ด€์‹ฌ์‚ฌ"์™€ "๋ฆฌ์†Œ์Šค"๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ์š”ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
#### ๋™์ž‘
#### ์ž‘๋™
์—ฌ๊ธฐ์„œ "๋™์ž‘(Operation)"์€ HTTP "๋ฉ”์†Œ๋“œ" ์ค‘ ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
"์ž‘๋™(Operation)"์€ HTTP "๋ฉ”์†Œ๋“œ" ์ค‘ ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ:
@ -215,7 +215,7 @@ API๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ "๊ฒฝ๋กœ"๋Š” "๊ด€์‹ฌ์‚ฌ"์™€ "๋ฆฌ์†Œ์Šค"๋ฅผ ๋ถ„๋ฆฌํ•˜
* `PUT`
* `DELETE`
...์ด๊ตญ์ ์ธ ๊ฒƒ๋“ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค:
...ํ”ํžˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ๋“ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค:
* `OPTIONS`
* `HEAD`
@ -226,20 +226,20 @@ HTTP ํ”„๋กœํ† ์ฝœ์—์„œ๋Š” ์ด๋Ÿฌํ•œ "๋ฉ”์†Œ๋“œ"๋ฅผ ํ•˜๋‚˜(๋˜๋Š” ์ด์ƒ) ์‚ฌ์šฉ
---
API๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ ์ผ๋ฐ˜์ ์œผ๋กœ ํŠน์ • ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • HTTP ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ํŠน์ • ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • HTTP ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:
์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
* `POST`: ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด.
* `GET`: ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด.
* `PUT`: ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด.
* `PUT`: ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด.
* `DELETE`: ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด.
๊ทธ๋ž˜์„œ OpenAPI์—์„œ๋Š” ๊ฐ HTTP ๋ฉ”์†Œ๋“œ๋“ค์„ "๋™์ž‘"์ด๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ OpenAPI์—์„œ๋Š” ๊ฐ HTTP ๋ฉ”์†Œ๋“œ๋“ค์„ "์ž‘๋™"์ด๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
์ด์ œ๋ถ€ํ„ฐ ์šฐ๋ฆฌ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ "**๋™์ž‘**"์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅผ๊ฒ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ ์—ญ์‹œ ์ด์ œ๋ถ€ํ„ฐ ๋ฉ”์†Œ๋“œ๋ฅผ "**์ž‘๋™**"์ด๋ผ๊ณ  ๋ถ€๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
#### *๊ฒฝ๋กœ ๋™์ž‘ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ* ์ •์˜
#### *๊ฒฝ๋กœ ์ž‘๋™ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ* ์ •์˜
```Python hl_lines="6"
{!../../../docs_src/first_steps/tutorial001.py!}
@ -248,26 +248,26 @@ API๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ ์ผ๋ฐ˜์ ์œผ๋กœ ํŠน์ • ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด
`@app.get("/")`์€ **FastAPI**์—๊ฒŒ ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ๋Š” ํ•จ์ˆ˜๊ฐ€ ๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•˜๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
* ๊ฒฝ๋กœ `/`
* <abbr title="HTTP GET ๋ฉ”์†Œ๋“œ"><code>get</code> ๋™์ž‘</abbr> ์‚ฌ์šฉ
* <abbr title="HTTP GET ๋ฉ”์†Œ๋“œ"><code>get</code> ์ž‘๋™</abbr> ์‚ฌ์šฉ
!!! info "`@decorator` ์ •๋ณด"
์ด `@something` ๋ฌธ๋ฒ•์€ ํŒŒ์ด์ฌ์—์„œ "๋ฐ์ฝ”๋ ˆ์ดํ„ฐ"๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
ํ•จ์ˆ˜ ๋งจ ์œ„์— ๋†“์Šต๋‹ˆ๋‹ค. ๋งˆ์น˜ ์˜ˆ์œ ์žฅ์‹์šฉ(Decorative) ๋ชจ์ž์ฒ˜๋Ÿผ(๊ฐœ์ธ์ ์œผ๋กœ ์ด ์šฉ์–ด๊ฐ€ ์—ฌ๊ธฐ์„œ ์œ ๋ž˜ํ•œ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค).
๋งˆ์น˜ ์˜ˆ์œ ์žฅ์‹์šฉ(Decorative) ๋ชจ์ž์ฒ˜๋Ÿผ(๊ฐœ์ธ์ ์œผ๋กœ ์ด ์šฉ์–ด๊ฐ€ ์—ฌ๊ธฐ์„œ ์œ ๋ž˜ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค) ํ•จ์ˆ˜ ๋งจ ์œ„์— ๋†“์Šต๋‹ˆ๋‹ค.
"๋ฐ์ฝ”๋ ˆ์ดํ„ฐ" ์•„๋ž˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฐ›๊ณ  ๊ทธ๊ฑธ ์ด์šฉํ•ด ๋ฌด์–ธ๊ฐ€ ํ•ฉ๋‹ˆ๋‹ค.
"๋ฐ์ฝ”๋ ˆ์ดํ„ฐ"๋Š” ์•„๋ž˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฐ›์•„ ๊ทธ๊ฒƒ์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ, ์ด ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” **FastAPI**์—๊ฒŒ ์•„๋ž˜ ํ•จ์ˆ˜๊ฐ€ **๊ฒฝ๋กœ** `/`์— ํ•ด๋‹นํ•˜๋Š” `get` **๋™์ž‘**ํ•˜๋ผ๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ, ์ด ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” **FastAPI**์—๊ฒŒ ์•„๋ž˜ ํ•จ์ˆ˜๊ฐ€ **๊ฒฝ๋กœ** `/`์˜ `get` **์ž‘๋™**์— ํ•ด๋‹นํ•œ๋‹ค๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด "**๊ฒฝ๋กœ ๋™์ž‘ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ**"์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด "**๊ฒฝ๋กœ ์ž‘๋™ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ**"์ž…๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ๋™์ž‘๋„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
๋‹ค๋ฅธ ์ž‘๋™๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
* `@app.post()`
* `@app.put()`
* `@app.delete()`
์ด๊ตญ์ ์ธ ๊ฒƒ๋“ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค:
ํ”ํžˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ๋“ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค:
* `@app.options()`
* `@app.head()`
@ -275,20 +275,20 @@ API๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ ์ผ๋ฐ˜์ ์œผ๋กœ ํŠน์ • ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด
* `@app.trace()`
!!! tip "ํŒ"
๊ฐ ๋™์ž‘(HTTP ๋ฉ”์†Œ๋“œ)์„ ์›ํ•˜๋Š” ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.
๊ฐ ์ž‘๋™(HTTP ๋ฉ”์†Œ๋“œ)์„ ์›ํ•˜๋Š” ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.
**FastAPI**๋Š” ํŠน์ • ์˜๋ฏธ๋ฅผ ๊ฐ•์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ์ •๋ณด๋Š” ์ง€์นจ์„œ์ผ๋ฟ ์š”๊ตฌ์‚ฌํ•ญ์ด ์•„๋‹™๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ์ •๋ณด๋Š” ์ง€์นจ์„œ์ผ๋ฟ ๊ฐ•์ œ์‚ฌํ•ญ์ด ์•„๋‹™๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด GraphQL์„ ์‚ฌ์šฉํ• ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ `POST` ๋™์ž‘๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด GraphQL์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์ผ๋ฐ˜์ ์œผ๋กœ `POST` ์ž‘๋™๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
### 4 ๋‹จ๊ณ„: **๊ฒฝ๋กœ ๋™์ž‘ ํ•จ์ˆ˜** ์ •์˜
### 4 ๋‹จ๊ณ„: **๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜** ์ •์˜
๋‹ค์Œ์€ ์šฐ๋ฆฌ์˜ "**๊ฒฝ๋กœ ๋™์ž‘ ํ•จ์ˆ˜**"์ž…๋‹ˆ๋‹ค:
๋‹ค์Œ์€ ์šฐ๋ฆฌ์˜ "**๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜**"์ž…๋‹ˆ๋‹ค:
* **๊ฒฝ๋กœ**: ๋Š” `/`์ž…๋‹ˆ๋‹ค.
* **๋™์ž‘**: ์€ `get`์ž…๋‹ˆ๋‹ค.
* **์ž‘๋™**: ์€ `get`์ž…๋‹ˆ๋‹ค.
* **ํ•จ์ˆ˜**: ๋Š” "๋ฐ์ฝ”๋ ˆ์ดํ„ฐ" ์•„๋ž˜์— ์žˆ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค (`@app.get("/")` ์•„๋ž˜).
```Python hl_lines="7"
@ -297,13 +297,13 @@ API๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ ์ผ๋ฐ˜์ ์œผ๋กœ ํŠน์ • ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด
์ด๊ฒƒ์€ ํŒŒ์ด์ฌ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
`GET` ๋™์ž‘์„ ์‚ฌ์šฉํ•˜์—ฌ URL "`/`"์— ๋Œ€ํ•œ ์š”์ฒญ์„ ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค **FastAPI**์— ์˜ํ•ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
URL "`/`"์— ๋Œ€ํ•œ `GET` ์ž‘๋™์„ ์‚ฌ์šฉํ•˜๋Š” ์š”์ฒญ์„ ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค **FastAPI**์— ์˜ํ•ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
์œ„์˜ ๊ฒฝ์šฐ `async` ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
์œ„์˜ ์˜ˆ์‹œ์—์„œ ์ด ํ•จ์ˆ˜๋Š” `async`(๋น„๋™๊ธฐ) ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
---
`async def` ๋Œ€์‹  ์ผ๋ฐ˜ ํ•จ์ˆ˜๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
`async def`์„ ์ด์šฉํ•˜๋Š” ๋Œ€์‹  ์ผ๋ฐ˜ ํ•จ์ˆ˜๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
```Python hl_lines="7"
{!../../../docs_src/first_steps/tutorial003.py!}
@ -322,12 +322,12 @@ API๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ ์ผ๋ฐ˜์ ์œผ๋กœ ํŠน์ • ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด
Pydantic ๋ชจ๋ธ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(๋‚˜์ค‘์— ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค).
JSON์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜๋˜๋Š” ๊ฐ์ฒด๋“ค๊ณผ ๋ชจ๋ธ๋“ค์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค(ORM ๋“ฑ์„ ํฌํ•จํ•ด์„œ์š”). ๊ฐ€์žฅ ๋งˆ์Œ์— ๋“œ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์„ธ์š”, ์ด๋ฏธ ์ง€์›๋˜๊ณ  ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.
JSON์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜๋˜๋Š” ๊ฐ์ฒด๋“ค๊ณผ ๋ชจ๋ธ๋“ค(ORM ๋“ฑ์„ ํฌํ•จํ•ด์„œ)์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋งˆ์Œ์— ๋“œ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค, ์ด๋ฏธ ์ง€์›๋˜๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
## ์š”์•ฝ
* `FastAPI` ์ž„ํฌํŠธ.
* `app` ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ.
* (`@app.get("/")`์ฒ˜๋Ÿผ) **๊ฒฝ๋กœ ๋™์ž‘ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ** ์ž‘์„ฑ.
* (์œ„์— ์žˆ๋Š” `def root(): ...`์ฒ˜๋Ÿผ) **๊ฒฝ๋กœ ๋™์ž‘ ํ•จ์ˆ˜** ์ž‘์„ฑ.
* (`@app.get("/")`์ฒ˜๋Ÿผ) **๊ฒฝ๋กœ ์ž‘๋™ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ** ์ž‘์„ฑ.
* (์œ„์— ์žˆ๋Š” `def root(): ...`์ฒ˜๋Ÿผ) **๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜** ์ž‘์„ฑ.
* (`uvicorn main:app --reload`์ฒ˜๋Ÿผ) ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰.

27
docs/ko/docs/tutorial/index.md

@ -1,16 +1,16 @@
# ์ž์Šต์„œ - ์‚ฌ์šฉ์ž ์•ˆ๋‚ด์„œ
์ด ์ž์Šต์„œ๋Š” **FastAPI**์˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์„ ๋‹จ๊ณ„๋ณ„๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
์ด ์ž์Šต์„œ๋Š” ๋‹จ๊ณ„๋ณ„๋กœ **FastAPI**์˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ ์„น์…˜์€ ์ด์ „ ์„น์…˜์„ ๊ธฐ๋ฐ˜ํ•ด์„œ ์ ์ง„์ ์œผ๋กœ ๋งŒ๋“ค์–ด ์กŒ์ง€๋งŒ, ์ฃผ์ œ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • API ์š”๊ตฌ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋ผ๋ฉด ์–ด๋Š ํŠน์ • ํ•ญ๋ชฉ์œผ๋กœ๋˜์ง€ ์ง์ ‘ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ ์„น์…˜์€ ์ด์ „ ์„น์…˜์— ๊ธฐ๋ฐ˜ํ•˜๋Š” ์ˆœ์ฐจ์ ์ธ ๊ตฌ์กฐ๋กœ ์ž‘์„ฑ๋˜์—ˆ์ง€๋งŒ, ๊ฐ ์ฃผ์ œ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”์— ๋”ฐ๋ผ ํŠน์ • ์„น์…˜์œผ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜์—ฌ ํ•„์š”ํ•œ ๋‚ด์šฉ์„ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ํ–ฅํ›„ ์ฐธ์กฐ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ํ–ฅํ›„์—๋„ ์ฐธ์กฐ ์ž๋ฃŒ๋กœ ์“ฐ์ผ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‹ค์‹œ ๋Œ์•„์™€์„œ ์ •ํ™•ํžˆ ํ•„์š”ํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ•„์š”ํ•  ๋•Œ์— ๋‹ค์‹œ ๋Œ์•„์™€์„œ ์›ํ•˜๋Š” ๊ฒƒ์„ ์ •ํ™•ํžˆ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
## ์ฝ”๋“œ ์‹คํ–‰ํ•˜๊ธฐ
๋ชจ๋“  ์ฝ”๋“œ ๋ธ”๋ก์€ ๋ณต์‚ฌํ•˜๊ณ  ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์‹ค์ œ๋กœ ํ…Œ์ŠคํŠธํ•œ ํŒŒ์ด์ฌ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค).
๋ชจ๋“  ์ฝ”๋“œ ๋ธ”๋ก์€ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์‹ค์ œ๋กœ ํ…Œ์ŠคํŠธ๋œ ํŒŒ์ด์ฌ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค).
์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ฝ”๋“œ๋ฅผ `main.py` ํŒŒ์ผ์— ๋ณต์‚ฌํ•˜๊ณ  ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ `uvicorn`์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:
@ -28,17 +28,18 @@ $ uvicorn main:app --reload
</div>
์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๋ณต์‚ฌ, ํŽธ์ง‘ํ•  ๋•Œ, ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ **๊ฐ•๋ ฅํžˆ ์žฅ๋ ค**ํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๋ณต์‚ฌ, ํŽธ์ง‘ํ•  ๋•Œ, ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ **๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅ**ํ•ฉ๋‹ˆ๋‹ค.
๋กœ์ปฌ ํŽธ์ง‘๊ธฐ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๋ชจ๋“  ํƒ€์ž… ๊ฒ€์‚ฌ์™€ ์ž๋™์™„์„ฑ ๋“ฑ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ ์€์ง€ ๋ณด๋ฉด์„œ FastAPI์˜ ๋น„๋กœ์†Œ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŽธ์ง‘๊ธฐ์—์„œ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๋ชจ๋“  ํƒ€์ž… ๊ฒ€์‚ฌ์™€ ์ž๋™์™„์„ฑ ๋“ฑ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ ์€์ง€ ๋ณด๋ฉด์„œ FastAPI์˜ ์žฅ์ ์„ ์‹ค์ œ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
---
## FastAPI ์„ค์น˜
์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” FastAPI ์„ค์น˜์ž…๋‹ˆ๋‹ค.
์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” FastAPI๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ž์Šต์‹œ์—๋Š” ๋ชจ๋“  ์„ ํƒ์ ์ธ ์˜์กด์„ฑ ๋ฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
์ž์Šต์‹œ์—๋Š” ๋ชจ๋“  ์„ ํƒ์ ์ธ ์˜์กด์„ฑ ๋ฐ ๊ธฐ๋Šฅ์„ ํ•จ๊ป˜ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค:
<div class="termy">
@ -50,7 +51,7 @@ $ pip install "fastapi[all]"
</div>
...์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” `uvicorn` ์—ญ์‹œ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
...์ด๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” `uvicorn` ๋˜ํ•œ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
!!! note "์ฐธ๊ณ "
๋ถ€๋ถ„์ ์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
@ -73,8 +74,8 @@ $ pip install "fastapi[all]"
์ด **์ž์Šต์„œ - ์‚ฌ์šฉ์ž ์•ˆ๋‚ด์„œ** ๋‹ค์Œ์— ์ฝ์„ ์ˆ˜ ์žˆ๋Š” **๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž ์•ˆ๋‚ด์„œ**๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
**๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž ์•ˆ๋‚ด์„œ**๋Š” ํ˜„์žฌ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ , ๋™์ผํ•œ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๋“ค์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
**๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž ์•ˆ๋‚ด์„œ**๋Š” ํ˜„์žฌ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ , ๋™์ผํ•œ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ (์ง€๊ธˆ ์ฝ๊ณ  ์žˆ๋Š”) **์ž์Šต์„œ - ์‚ฌ์šฉ์ž ์•ˆ๋‚ด์„œ**๋ฅผ ๋จผ์ € ์ฝ๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ (์ง€๊ธˆ ์ฝ๊ณ  ์žˆ๋Š”) **์ž์Šต์„œ - ์‚ฌ์šฉ์ž ์•ˆ๋‚ด์„œ**๋ฅผ ๋จผ์ € ์ฝ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
**์ž์Šต์„œ - ์‚ฌ์šฉ์ž ์•ˆ๋‚ด์„œ**๋งŒ์œผ๋กœ๋„ ์™„์ „ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ **๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž ์•ˆ๋‚ด์„œ**์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
**์ž์Šต์„œ - ์‚ฌ์šฉ์ž ์•ˆ๋‚ด์„œ**๋งŒ์œผ๋กœ๋„ ์™„์ „ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ **๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž ์•ˆ๋‚ด์„œ**์˜ ์ถ”๊ฐ€์ ์ธ ์•„์ด๋””์–ด๋ฅผ ์ ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

72
docs/ko/docs/tutorial/path-params.md

@ -1,6 +1,6 @@
# ๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜
ํŒŒ์ด์ฌ ํฌ๋งท ๋ฌธ์ž์—ด์ด ์‚ฌ์šฉํ•˜๋Š” ๋™์ผํ•œ ๋ฌธ๋ฒ•์œผ๋กœ "๋งค๊ฐœ๋ณ€์ˆ˜" ๋˜๋Š” "๋ณ€์ˆ˜"๋ฅผ ๊ฒฝ๋กœ์— ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
ํŒŒ์ด์ฌ์˜ ํฌ๋งท ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ๊ฒฝ๋กœ "๋งค๊ฐœ๋ณ€์ˆ˜" ๋˜๋Š” "๋ณ€์ˆ˜"๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
```Python hl_lines="6-7"
{!../../../docs_src/path_params/tutorial001.py!}
@ -22,10 +22,10 @@
{!../../../docs_src/path_params/tutorial002.py!}
```
์ง€๊ธˆ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ, `item_id`๋Š” `int`๋กœ ์„ ์–ธ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์œ„์˜ ์˜ˆ์‹œ์—์„œ, `item_id`๋Š” `int`๋กœ ์„ ์–ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
!!! check "ํ™•์ธ"
์ด ๊ธฐ๋Šฅ์€ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ, ์ž๋™์™„์„ฑ ๋“ฑ์„ ํŽธ์ง‘๊ธฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค
์ด ๊ธฐ๋Šฅ์€ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ, ์ž๋™์™„์„ฑ ๋“ฑ์˜ ํŽธ์ง‘๊ธฐ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
## ๋ฐ์ดํ„ฐ <abbr title="๋‹ค์Œ์œผ๋กœ๋„ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค: ์ง๋ ฌํ™”, ํŒŒ์‹ฑ, ๋งˆ์ƒฌ๋ง">๋ณ€ํ™˜</abbr>
@ -42,7 +42,7 @@
## ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ
ํ•˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €์—์„œ <a href="http://127.0.0.1:8000/items/foo" class="external-link" target="_blank">http://127.0.0.1:8000/items/foo</a>๋กœ ์ด๋™ํ•˜๋ฉด, ๋ฉ‹์ง„ HTTP ์˜ค๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
ํ•˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €์—์„œ <a href="http://127.0.0.1:8000/items/foo" class="external-link" target="_blank">http://127.0.0.1:8000/items/foo</a>๋กœ ์ด๋™ํ•˜๋ฉด, HTTP ์˜ค๋ฅ˜๊ฐ€ ์ž˜ ๋œจ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
```JSON
{
@ -61,12 +61,12 @@
๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜ `item_id`๋Š” `int`๊ฐ€ ์•„๋‹Œ `"foo"` ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
`int` ๋Œ€์‹  `float`์„ ์ „๋‹ฌํ•˜๋ฉด ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค: <a href="http://127.0.0.1:8000/items/4.2" class="external-link" target="_blank">http://127.0.0.1:8000/items/4.2</a>
`int`๊ฐ€ ์•„๋‹Œ `float`์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค: <a href="http://127.0.0.1:8000/items/4.2" class="external-link" target="_blank">http://127.0.0.1:8000/items/4.2</a>
!!! check "ํ™•์ธ"
์ฆ‰, ํŒŒ์ด์ฌ ํƒ€์ž… ์„ ์–ธ์„ ํ•˜๋ฉด **FastAPI**๋Š” ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ์„ ํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ฅ˜๋Š” ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•œ ์ง€์ ๋„ ์ •ํ™•ํ•˜๊ฒŒ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ฅ˜์—๋Š” ์ •ํ™•ํžˆ ์–ด๋Š ์ง€์ ์—์„œ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋Š”์ง€ ๋ช…์‹œ๋ฉ๋‹ˆ๋‹ค.
์ด๋Š” API์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
@ -77,11 +77,11 @@
<img src="/img/tutorial/path-params/image01.png">
!!! check "ํ™•์ธ"
๋‹ค์‹œ ํ•œ๋ฒˆ, ๊ทธ์ € ํŒŒ์ด์ฌ ํƒ€์ž… ์„ ์–ธ์„ ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด **FastAPI**๋Š” ์ž๋™ ๋Œ€ํ™”์‹ API ๋ฌธ์„œ(Swagger UI ํ†ตํ•ฉ)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๊ทธ์ € ํŒŒ์ด์ฌ ํƒ€์ž… ์„ ์–ธ์„ ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด **FastAPI**๋Š” ์ž๋™ ๋Œ€ํ™”ํ˜• API ๋ฌธ์„œ(Swagger UI)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ •์ˆ˜ํ˜•์œผ๋กœ ์„ ์–ธ๋์Œ์„ ์ฃผ๋ชฉํ•˜์„ธ์š”.
๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ •์ˆ˜ํ˜•์œผ๋กœ ๋ช…์‹œ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
## ํ‘œ์ค€ ๊ธฐ๋ฐ˜์˜ ์ด์ , ๋Œ€์ฒด ๋ฌธ์„œํ™”
## ํ‘œ์ค€ ๊ธฐ๋ฐ˜์˜ ์ด์ , ๋Œ€์ฒด ๋ฌธ์„œ
๊ทธ๋ฆฌ๊ณ  ์ƒ์„ฑ๋œ ์Šคํ‚ค๋งˆ๋Š” <a href="https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md" class="external-link" target="_blank">OpenAPI</a> ํ‘œ์ค€์—์„œ ๋‚˜์˜จ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธํ™˜๋˜๋Š” ๋„๊ตฌ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
@ -89,43 +89,43 @@
<img src="/img/tutorial/path-params/image02.png">
์ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ˜ธํ™˜๋˜๋Š” ๋„๊ตฌ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์–ธ์–ด์— ๋Œ€ํ•œ ์ฝ”๋“œ ์ƒ์„ฑ ๋„๊ตฌ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
์ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค์–‘ํ•œ ์–ธ์–ด์— ๋Œ€ํ•œ ์ฝ”๋“œ ์ƒ์„ฑ ๋„๊ตฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ˜ธํ™˜๋˜๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
## Pydantic
๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ์€ <a href="https://pydantic-docs.helpmanual.io/" class="external-link" target="_blank">Pydantic</a>์— ์˜ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ์ด๋กœ ์ธํ•œ ๋ชจ๋“  ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ๊ด€๋ฆฌ๋ฅผ ์ž˜ ๋ฐ›๊ณ  ์žˆ์Œ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ์€ <a href="https://pydantic-docs.helpmanual.io/" class="external-link" target="_blank">Pydantic</a>์— ์˜ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ์ด๋กœ ์ธํ•œ ์ด์ ์„ ๋ชจ๋‘ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ๊ด€๋ฆฌ๋ฅผ ์ž˜ ๋ฐ›๊ณ  ์žˆ์Œ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
`str`, `float`, `bool`๊ณผ ๋‹ค๋ฅธ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์„ ์–ธ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
`str`, `float`, `bool`, ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์„ ์–ธ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ค‘ ๋ช‡ ๊ฐ€์ง€๋Š” ์ž์Šต์„œ์˜ ๋‹ค์Œ ์žฅ์—์„œ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.
์ด ์ค‘ ๋ช‡ ๊ฐ€์ง€๋Š” ์ž์Šต์„œ์˜ ๋‹ค์Œ ์žฅ์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
## ์ˆœ์„œ ๋ฌธ์ œ
*๊ฒฝ๋กœ ๋™์ž‘*์„ ๋งŒ๋“ค๋•Œ ๊ณ ์ • ๊ฒฝ๋กœ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ์ƒํ™ฉ๋“ค์„ ๋งž๋‹ฅ๋œจ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
*๊ฒฝ๋กœ ์ž‘๋™*์„ ๋งŒ๋“ค๋•Œ ๊ณ ์ • ๊ฒฝ๋กœ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ์ƒํ™ฉ๋“ค์„ ๋งž๋‹ฅ๋œจ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
`/users/me`์ฒ˜๋Ÿผ, ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค.
์‚ฌ์šฉ์ž ID๋ฅผ ์ด์šฉํ•ด ํŠน์ • ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ๋กœ `/users/{user_id}`๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
*๊ฒฝ๋กœ ๋™์ž‘*์€ ์ˆœ์ฐจ์ ์œผ๋กœ ํ‰๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์— `/users/{user_id}` ์ด์ „์— `/users/me`๋ฅผ ๋จผ์ € ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
*๊ฒฝ๋กœ ์ž‘๋™*์€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— `/users/{user_id}` ์ด์ „์— `/users/me`๋ฅผ ๋จผ์ € ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
```Python hl_lines="6 11"
{!../../../docs_src/path_params/tutorial003.py!}
```
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด `/users/{user_id}`๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ `user_id`์˜ ๊ฐ’์„ `"me"`๋ผ๊ณ  "์ƒ๊ฐํ•˜์—ฌ" `/users/me`๋„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด `/users/{user_id}`๋Š” `/users/me` ์š”์ฒญ ๋˜ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ `user_id`์˜ ๊ฐ’์ด `"me"`์ธ ๊ฒƒ์œผ๋กœ "์ƒ๊ฐํ•˜๊ฒŒ" ๋ฉ๋‹ˆ๋‹ค.
## ์‚ฌ์ „์ •์˜ ๊ฐ’
๋งŒ์•ฝ *๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜*๋ฅผ ๋ฐ›๋Š” *๊ฒฝ๋กœ ๋™์ž‘*์ด ์žˆ์ง€๋งŒ, ์œ ํšจํ•˜๊ณ  ๋ฏธ๋ฆฌ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” *๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜* ๊ฐ’์„ ์›ํ•œ๋‹ค๋ฉด ํŒŒ์ด์ฌ ํ‘œ์ค€ <abbr title="์—ด๊ฑฐํ˜•(Enumeration)">`Enum`</abbr>์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋งŒ์•ฝ *๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜*๋ฅผ ๋ฐ›๋Š” *๊ฒฝ๋กœ ์ž‘๋™*์ด ์žˆ์ง€๋งŒ, *๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜*๋กœ ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์„ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํŒŒ์ด์ฌ ํ‘œ์ค€ <abbr title="์—ด๊ฑฐํ˜•(Enumeration)">`Enum`</abbr>์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
### `Enum` ํด๋ž˜์Šค ์ƒ์„ฑ
`Enum`์„ ์ž„ํฌํŠธํ•˜๊ณ  `str`๊ณผ `Enum`์„ ์ƒ์†ํ•˜๋Š” ์„œ๋ธŒ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
`str`์„ ์ƒ์†ํ•จ์œผ๋กœ์จ API ๋ฌธ์„œ๋Š” ๊ฐ’์ด `string` ํ˜•์ด์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜๊ณ  ์ œ๋Œ€๋กœ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
`str`์„ ์ƒ์†ํ•จ์œผ๋กœ์จ API ๋ฌธ์„œ๋Š” ๊ฐ’์ด `string` ํ˜•์ด์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜๊ณ  ์ด๋Š” ๋ฌธ์„œ์— ์ œ๋Œ€๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
๊ณ ์ •๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํšจํ•œ ํด๋ž˜์Šค ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค:
๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์— ํ•ด๋‹นํ•˜๋Š” ๊ณ ์ •๋œ ๊ฐ’์˜ ํด๋ž˜์Šค ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋“ค์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค:
```Python hl_lines="1 6-9"
{!../../../docs_src/path_params/tutorial005.py!}
@ -135,7 +135,7 @@
<a href="https://docs.python.org/3/library/enum.html" class="external-link" target="_blank">์—ด๊ฑฐํ˜•(๋˜๋Š” enums)</a>์€ ํŒŒ์ด์ฌ ๋ฒ„์ „ 3.4 ์ดํ›„๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
!!! tip "ํŒ"
ํ˜น์‹œ ํ—ท๊ฐˆ๋ฆฐ๋‹ค๋ฉด, "AlexNet", "ResNet", ๊ทธ๋ฆฌ๊ณ  "LeNet"์€ ๊ทธ์ € ๊ธฐ๊ณ„ ํ•™์Šต <abbr title="๊ธฐ์ˆ ์ ์œผ๋กœ ์ •ํ™•ํžˆ๋Š” ๋”ฅ ๋Ÿฌ๋‹ ๋ชจ๋ธ ๊ตฌ์กฐ">๋ชจ๋ธ</abbr>๋“ค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
ํ˜น์‹œ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด, "AlexNet", "ResNet", ๊ทธ๋ฆฌ๊ณ  "LeNet"์€ ๊ทธ์ € ๊ธฐ๊ณ„ ํ•™์Šต <abbr title="๊ธฐ์ˆ ์ ์œผ๋กœ ์ •ํ™•ํžˆ๋Š” ๋”ฅ ๋Ÿฌ๋‹ ๋ชจ๋ธ ๊ตฌ์กฐ">๋ชจ๋ธ</abbr>๋“ค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
### *๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜* ์„ ์–ธ
@ -147,7 +147,7 @@
### ๋ฌธ์„œ ํ™•์ธ
*๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜*์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ ๋ฏธ๋ฆฌ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋Œ€ํ™”ํ˜• ๋ฌธ์„œ์—์„œ ๋ฉ‹์ง€๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:
*๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜*์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ ๋ฏธ๋ฆฌ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋Œ€ํ™”ํ˜• ๋ฌธ์„œ์—์„œ ์ž˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:
<img src="/img/tutorial/path-params/image03.png">
@ -157,7 +157,7 @@
#### *์—ด๊ฑฐํ˜• ๋ฉค๋ฒ„* ๋น„๊ต
์—ด๊ฑฐ์ฒด `ModelName`์˜ *์—ด๊ฑฐํ˜• ๋ฉค๋ฒ„*๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
์—ด๊ฑฐํ˜• `ModelName`์˜ *์—ด๊ฑฐํ˜• ๋ฉค๋ฒ„*๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
```Python hl_lines="17"
{!../../../docs_src/path_params/tutorial005.py!}
@ -165,7 +165,7 @@
#### *์—ด๊ฑฐํ˜• ๊ฐ’* ๊ฐ€์ ธ์˜ค๊ธฐ
`model_name.value` ๋˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ `your_enum_member.value`๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹ค์ œ๊ฐ’(์ง€๊ธˆ์˜ ๊ฒฝ์šฐ `str`)์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
`model_name.value` ๋˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ `your_enum_member.value`๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹ค์ œ ๊ฐ’(์œ„ ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ `str`)์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
```Python hl_lines="20"
{!../../../docs_src/path_params/tutorial005.py!}
@ -176,7 +176,7 @@
#### *์—ด๊ฑฐํ˜• ๋ฉค๋ฒ„* ๋ฐ˜ํ™˜
*๊ฒฝ๋กœ ๋™์ž‘*์—์„œ ์ค‘์ฒฉ JSON ๋ณธ๋ฌธ(์˜ˆ: `dict`) ์—ญ์‹œ *์—ด๊ฑฐํ˜• ๋ฉค๋ฒ„*๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
*๊ฒฝ๋กœ ์ž‘๋™*์—์„œ *์—ด๊ฑฐํ˜• ๋ฉค๋ฒ„*๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ค‘์ฒฉ JSON ๋ณธ๋ฌธ(์˜ˆ: `dict`)๋‚ด์˜ ๊ฐ’์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ๊ฐ’(์ด ๊ฒฝ์šฐ ๋ฌธ์ž์—ด)์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค:
@ -195,50 +195,50 @@
## ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜
`/files/{file_path}`๊ฐ€ ์žˆ๋Š” *๊ฒฝ๋กœ ๋™์ž‘*์ด ์žˆ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค.
๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•˜๋Š” *๊ฒฝ๋กœ ์ž‘๋™* `/files/{file_path}`์ด ์žˆ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์—ฌ๋Ÿฌ๋ถ„์€ `home/johndoe/myfile.txt`์ฒ˜๋Ÿผ *path*์— ๋“ค์–ด์žˆ๋Š” `file_path` ์ž์ฒด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์ด ๊ฒฝ์šฐ `file_path` ์ž์ฒด๊ฐ€ `home/johndoe/myfile.txt`์™€ ๊ฐ™์€ ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ํ•ด๋‹น ํŒŒ์ผ์˜ URL์€ ๋‹ค์Œ์ฒ˜๋Ÿผ ๋ฉ๋‹ˆ๋‹ค: `/files/home/johndoe/myfile.txt`.
์ด๋•Œ ํ•ด๋‹น ํŒŒ์ผ์˜ URL์€ ๋‹ค์Œ์ฒ˜๋Ÿผ ๋ฉ๋‹ˆ๋‹ค: `/files/home/johndoe/myfile.txt`.
### OpenAPI ์ง€์›
ํ…Œ์ŠคํŠธ์™€ ์ •์˜๊ฐ€ ์–ด๋ ค์šด ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ OpenAPI๋Š” *๊ฒฝ๋กœ*๋ฅผ ํฌํ•จํ•˜๋Š” *๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜*๋ฅผ ๋‚ด๋ถ€์— ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿผ์—๋„ Starlette์˜ ๋‚ด๋ถ€ ๋„๊ตฌ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ **FastAPI**์—์„œ๋Š” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿผ์—๋„ Starlette์˜ ๋‚ด๋ถ€ ๋„๊ตฌ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ **FastAPI**์—์„œ๋Š” ์ด๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ ๋ฌธ์„œ๋Š” ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์„œ์— ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ •๋ณด๊ฐ€ ๋ช…์‹œ๋˜์ง€๋Š” ์•Š์ง€๋งŒ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
### ๊ฒฝ๋กœ ๋ณ€ํ™˜๊ธฐ
Starlette์—์„œ ์ง์ ‘ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ URL์„ ์‚ฌ์šฉํ•˜์—ฌ *path*๋ฅผ ํฌํ•จํ•˜๋Š” *๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜*๋ฅผ ์„ ์–ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
Starlette์˜ ์˜ต์…˜์„ ์ง์ ‘ ์ด์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ URL์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ *path*๋ฅผ ํฌํ•จํ•˜๋Š” *๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜*๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
```
/files/{file_path:path}
```
์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์€ `file_path`์ด๊ณ  ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„ `:path`๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ *๊ฒฝ๋กœ*์™€ ์ผ์น˜ํ•ด์•ผํ•จ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์€ `file_path`์ด๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„ `:path`๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ *๊ฒฝ๋กœ*์™€ ์ผ์น˜ํ•ด์•ผ ํ•จ์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
```Python hl_lines="6"
{!../../../docs_src/path_params/tutorial004.py!}
```
!!! tip "ํŒ"
๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ `/home/johndoe/myfile.txt`๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด ์Šฌ๋ž˜์‹œ๋กœ ์‹œ์ž‘(`/`)ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ๊ฐ’์ด `/home/johndoe/myfile.txt`์™€ ๊ฐ™์ด ์Šฌ๋ž˜์‹œ๋กœ ์‹œ์ž‘(`/`)ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ฒฝ์šฐ URL์€: `/files//home/johndoe/myfile.txt`์ด๋ฉฐ `files`๊ณผ `home` ์‚ฌ์ด์— ์ด์ค‘ ์Šฌ๋ž˜์‹œ(`//`)๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.
## ์š”์•ฝ
**FastAPI**๊ณผ ํ•จ๊ป˜๋ผ๋ฉด ์งง๊ณ  ์ง๊ด€์ ์ธ ํ‘œ์ค€ ํŒŒ์ด์ฌ ํƒ€์ž… ์„ ์–ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
**FastAPI**๋ฅผ ์ด์šฉํ•˜๋ฉด ์งง๊ณ  ์ง๊ด€์ ์ธ ํ‘œ์ค€ ํŒŒ์ด์ฌ ํƒ€์ž… ์„ ์–ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
* ํŽธ์ง‘๊ธฐ ์ง€์›: ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ, ์ž๋™์™„์„ฑ ๋“ฑ
* ๋ฐ์ดํ„ฐ "<abbr title="HTTP ์š”์ฒญ์—์„œ ์ „๋‹ฌ๋˜๋Š” ๋ฌธ์ž์—ด์„ ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜">ํŒŒ์‹ฑ</abbr>"
* ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ
* API ์ฃผ์„(Annotation)๊ณผ ์ž๋™ ๋ฌธ์„œ
์œ„ ์‚ฌํ•ญ๋“ค์„ ๊ทธ์ € ํ•œ๋ฒˆ์— ์„ ์–ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๋‹จ ํ•œ๋ฒˆ์˜ ์„ ์–ธ๋งŒ์œผ๋กœ ์œ„ ์‚ฌํ•ญ๋“ค์„ ๋ชจ๋‘ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Š” (์›๋ž˜ ์„ฑ๋Šฅ๊ณผ๋Š” ๋ณ„๊ฐœ๋กœ) ๋Œ€์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ **FastAPI**์˜ ์ฃผ์š” ๊ฐ€์‹œ์  ์žฅ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋Š” ๋Œ€์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ (์—„์ฒญ๋‚˜๊ฒŒ ๋น ๋ฅธ ์„ฑ๋Šฅ ์™ธ์—๋„) **FastAPI**์˜ ์ฃผ์š”ํ•œ ์žฅ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

16
docs/ko/docs/tutorial/query-params.md

@ -1,6 +1,6 @@
# ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜
๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ, "์ฟผ๋ฆฌ" ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž๋™ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.
๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด "์ฟผ๋ฆฌ" ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž๋™ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.
```Python hl_lines="9"
{!../../../docs_src/query_params/tutorial001.py!}
@ -8,7 +8,7 @@
์ฟผ๋ฆฌ๋Š” URL์—์„œ `?` ํ›„์— ๋‚˜์˜ค๊ณ  `&`์œผ๋กœ ๊ตฌ๋ถ„๋˜๋Š” ํ‚ค-๊ฐ’ ์Œ์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, URL์—์„œ:
์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜ URL์—์„œ:
```
http://127.0.0.1:8000/items/?skip=0&limit=10
@ -21,7 +21,7 @@ http://127.0.0.1:8000/items/?skip=0&limit=10
URL์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ "์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ" ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ํŒŒ์ด์ฌ ํƒ€์ž…๊ณผ ํ•จ๊ป˜ ์„ ์–ธํ•  ๊ฒฝ์šฐ(์œ„ ์˜ˆ์—์„œ `int`), ํ•ด๋‹น ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋˜๊ณ  ์ด์— ๋Œ€ํ•ด ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ํŒŒ์ด์ฌ ํƒ€์ž…๊ณผ ํ•จ๊ป˜ ์„ ์–ธํ•  ๊ฒฝ์šฐ(์œ„ ์˜ˆ์—์„œ `int`), ํ•ด๋‹น ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ๋ฐ ๊ฒ€์ฆ๋ฉ๋‹ˆ๋‹ค.
๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ ์šฉ๋œ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค:
@ -36,13 +36,13 @@ URL์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ "์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ" ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
์œ„ ์˜ˆ์—์„œ `skip=0`๊ณผ `limit=10`์€ ๊ธฐ๋ณธ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฏ€๋กœ URL๋กœ ์ด๋™ํ•˜๋ฉด:
๊ทธ๋Ÿฌ๋ฏ€๋กœ URL๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€:
```
http://127.0.0.1:8000/items/
```
์•„๋ž˜๋กœ ์ด๋™ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
์•„๋ž˜๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
```
http://127.0.0.1:8000/items/?skip=0&limit=10
@ -136,7 +136,7 @@ http://127.0.0.1:8000/items/foo?short=yes
ํŠน์ •๊ฐ’์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ์„ ํƒ์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„  ๊ธฐ๋ณธ๊ฐ’์„ `None`์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ•„์ˆ˜๋กœ ๋งŒ๋“ค๋ ค๋ฉด ๊ธฐ๋ณธ๊ฐ’์„ ์„ ์–ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค:
๊ทธ๋Ÿฌ๋‚˜ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ•„์ˆ˜๋กœ ๋งŒ๋“ค๋ ค๋ฉด ๋‹จ์ˆœํžˆ ๊ธฐ๋ณธ๊ฐ’์„ ์„ ์–ธํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค:
```Python hl_lines="6-7"
{!../../../docs_src/query_params/tutorial005.py!}
@ -144,7 +144,7 @@ http://127.0.0.1:8000/items/foo?short=yes
์—ฌ๊ธฐ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜ `needy`๋Š” `str`ํ˜•์ธ ํ•„์ˆ˜ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
๋ธŒ๋ผ์šฐ์ €์—์„œ URL์„ ์•„๋ž˜์ฒ˜๋Ÿผ ์—ฐ๋‹ค๋ฉด:
๋ธŒ๋ผ์šฐ์ €์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ URL์„ ์—ฐ๋‹ค๋ฉด:
```
http://127.0.0.1:8000/items/foo-item
@ -188,7 +188,7 @@ http://127.0.0.1:8000/items/foo-item?needy=sooooneedy
{!../../../docs_src/query_params/tutorial006.py!}
```
์ด ๊ฒฝ์šฐ 3๊ฐ€์ง€ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:
์œ„ ์˜ˆ์‹œ์—์„œ๋Š” 3๊ฐ€์ง€ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:
* `needy`, ํ•„์ˆ˜์ ์ธ `str`.
* `skip`, ๊ธฐ๋ณธ๊ฐ’์ด `0`์ธ `int`.

Loadingโ€ฆ
Cancel
Save