Skip to content

Commit

Permalink
๐ŸŒ Add Korean translation for `docs/ko/docs/tutorial/query-params-str-โ€ฆ
Browse files Browse the repository at this point in the history
โ€ฆvalidations.md` (#2415)
  • Loading branch information
hard-coders committed Jan 22, 2024
1 parent eea7635 commit 87a4c9e
Showing 1 changed file with 303 additions and 0 deletions.
303 changes: 303 additions & 0 deletions docs/ko/docs/tutorial/query-params-str-validations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,303 @@
# ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฌธ์ž์—ด ๊ฒ€์ฆ

**FastAPI**๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด ๋ฐ ๊ฒ€์ฆ์„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์˜ˆ๋กœ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

```Python hl_lines="9"
{!../../../docs_src/query_params_str_validations/tutorial001.py!}
```

์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜ `q`๋Š” `Optional[str]` ์ž๋ฃŒํ˜•์ž…๋‹ˆ๋‹ค. ์ฆ‰, `str` ์ž๋ฃŒํ˜•์ด์ง€๋งŒ `None` ์—ญ์‹œ ๋  ์ˆ˜ ์žˆ์Œ์„ ๋œปํ•˜๊ณ , ์‹ค์ œ๋กœ ๊ธฐ๋ณธ๊ฐ’์€ `None`์ด๊ธฐ ๋•Œ๋ฌธ์— FastAPI๋Š” ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•„์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค.

!!! note "์ฐธ๊ณ "
FastAPI๋Š” `q`์˜ ๊ธฐ๋ณธ๊ฐ’์ด `= None`์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ˆ˜๊ฐ€ ์•„๋‹˜์„ ์••๋‹ˆ๋‹ค.

`Optional[str]`์— ์žˆ๋Š” `Optional`์€ FastAPI๊ฐ€ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ์ง€๋งŒ, ํŽธ์ง‘๊ธฐ์—๊ฒŒ ๋” ๋‚˜์€ ์ง€์›๊ณผ ์˜ค๋ฅ˜ ํƒ์ง€๋ฅผ ์ œ๊ณตํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

## ์ถ”๊ฐ€ ๊ฒ€์ฆ

`q`๊ฐ€ ์„ ํƒ์ ์ด์ง€๋งŒ ๊ฐ’์ด ์ฃผ์–ด์งˆ ๋•Œ๋งˆ๋‹ค **๊ฐ’์ด 50 ๊ธ€์ž๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š๊ฒŒ** ๊ฐ•์ œํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

### `Query` ์ž„ํฌํŠธ

์ด๋ฅผ ์œ„ํ•ด ๋จผ์ € `fastapi`์—์„œ `Query`๋ฅผ ์ž„ํฌํŠธํ•ฉ๋‹ˆ๋‹ค:

```Python hl_lines="3"
{!../../../docs_src/query_params_str_validations/tutorial002.py!}
```

## ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ `Query` ์‚ฌ์šฉ

์ด์ œ `Query`๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ `max_length` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ 50์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:

```Python hl_lines="9"
{!../../../docs_src/query_params_str_validations/tutorial002.py!}
```

๊ธฐ๋ณธ๊ฐ’ `None`์„ `Query(None)`์œผ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•˜๋ฏ€๋กœ, `Query`์˜ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ:

```Python
q: Optional[str] = Query(None)
```

...์œ„ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๋™์ผํ•˜๊ฒŒ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ํƒ์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค:

```Python
q: Optional[str] = None
```

ํ•˜์ง€๋งŒ ๋ช…์‹œ์ ์œผ๋กœ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

!!! info "์ •๋ณด"
FastAPI๋Š” ๋‹ค์Œ ๋ถ€๋ถ„์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

```Python
= None
```

๋˜๋Š”:

```Python
= Query(None)
```

๊ทธ๋ฆฌ๊ณ  `None`์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ผ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•„์ˆ˜์ ์ด์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.

`Optional` ๋ถ€๋ถ„์€ ํŽธ์ง‘๊ธฐ์—๊ฒŒ ๋” ๋‚˜์€ ์ง€์›์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ `Query`๋กœ ๋” ๋งŽ์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์˜ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด์— ์ ์šฉ๋˜๋Š” `max_length` ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค:

```Python
q: str = Query(None, max_length=50)
```

์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•  ๊ฒƒ์ด๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋ช…๋ฐฑํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉฐ, OpenAPI ์Šคํ‚ค๋งˆ *๊ฒฝ๋กœ ๋™์ž‘*์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฌธ์„œํ™” ํ•ฉ๋‹ˆ๋‹ค.

## ๊ฒ€์ฆ ์ถ”๊ฐ€

๋งค๊ฐœ๋ณ€์ˆ˜ `min_length` ๋˜ํ•œ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

```Python hl_lines="9"
{!../../../docs_src/query_params_str_validations/tutorial003.py!}
```

## ์ •๊ทœ์‹ ์ถ”๊ฐ€

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ผ์น˜ํ•ด์•ผ ํ•˜๋Š” <abbr title="์ •๊ทœํ‘œํ˜„์‹(regular expression), regex ๋˜๋Š” regexp๋Š” ๋ฌธ์ž์—ด ์กฐํšŒ ํŒจํ„ด์„ ์ •์˜ํ•˜๋Š” ๋ฌธ์ž๋“ค์˜ ์ˆœ์—ด์ž…๋‹ˆ๋‹ค">์ •๊ทœํ‘œํ˜„์‹</abbr>์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

```Python hl_lines="10"
{!../../../docs_src/query_params_str_validations/tutorial004.py!}
```

์ด ํŠน์ • ์ •๊ทœํ‘œํ˜„์‹์€ ์ „๋‹ฌ ๋ฐ›์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค:

* `^`: ์ด์ „์— ๋ฌธ์ž๊ฐ€ ์—†๊ณ  ๋’ค๋”ฐ๋ฅด๋Š” ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
* `fixedquery`: ์ •ํ™•ํžˆ `fixedquery` ๊ฐ’์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.
* `$`: ์—ฌ๊ธฐ์„œ ๋๋‚˜๊ณ  `fixedquery` ์ดํ›„๋กœ ์•„๋ฌด ๋ฌธ์ž๋„ ๊ฐ–์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

**"์ •๊ทœํ‘œํ˜„์‹"** ๊ฐœ๋…์— ๋Œ€ํ•ด ์ƒ์‹ค๊ฐ์„ ๋Š๊ผˆ๋‹ค๋ฉด ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ์—๊ฒŒ ์–ด๋ ค์šด ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. ์•„์ง์€ ์ •๊ทœํ‘œํ˜„์‹ ์—†์ด๋„ ๋งŽ์€ ์ž‘์—…๋“ค์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์–ธ์ œ๋“ ์ง€ ๊ฐ€์„œ ๋ฐฐ์šธ์ˆ˜ ์žˆ๊ณ , **FastAPI**์—์„œ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

## ๊ธฐ๋ณธ๊ฐ’

๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ `None`์„ ์ „๋‹ฌํ•˜๋“ฏ์ด, ๋‹ค๋ฅธ ๊ฐ’์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

`min_length`๊ฐ€ `3`์ด๊ณ , ๊ธฐ๋ณธ๊ฐ’์ด `"fixedquery"`์ธ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜ `q`๋ฅผ ์„ ์–ธํ•ด๋ด…์‹œ๋‹ค:

```Python hl_lines="7"
{!../../../docs_src/query_params_str_validations/tutorial005.py!}
```

!!! note "์ฐธ๊ณ "
๊ธฐ๋ณธ๊ฐ’์„ ๊ฐ–๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์„ ํƒ์ ์ด ๋ฉ๋‹ˆ๋‹ค.

## ํ•„์ˆ˜๋กœ ๋งŒ๋“ค๊ธฐ

๋” ๋งŽ์€ ๊ฒ€์ฆ์ด๋‚˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์„ ์–ธํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธฐ๋ณธ๊ฐ’์„ ์„ ์–ธํ•˜์ง€ ์•Š๊ณ  ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜ `q`๋ฅผ ํ•„์ˆ˜๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

```Python
q: str
```

์•„๋ž˜ ๋Œ€์‹ :

```Python
q: Optional[str] = None
```

๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด `Query`๋กœ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค:

```Python
q: Optional[str] = Query(None, min_length=3)
```

๊ทธ๋ž˜์„œ `Query`๋ฅผ ํ•„์ˆ˜๊ฐ’์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•  ๋•Œ๋ฉด, ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ `...`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

```Python hl_lines="7"
{!../../../docs_src/query_params_str_validations/tutorial006.py!}
```

!!! info "์ •๋ณด"
์ด์ „์— `...`๋ฅผ ๋ณธ์ ์ด ์—†๋‹ค๋ฉด: ํŠน๋ณ„ํ•œ ๋‹จ์ผ๊ฐ’์œผ๋กœ, <a href="https://docs.python.org/3/library/constants.html#Ellipsis" class="external-link" target="_blank">ํŒŒ์ด์ฌ์˜ ์ผ๋ถ€์ด๋ฉฐ "Ellipsis"๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค</a>.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด **FastAPI**๊ฐ€ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ•„์ˆ˜์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

## ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฆฌ์ŠคํŠธ / ๋‹ค์ค‘๊ฐ’

์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ `Query`์™€ ํ•จ๊ป˜ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•  ๋•Œ, ๊ฐ’๋“ค์˜ ๋ฆฌ์ŠคํŠธ๋‚˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐ’์„ ๋ฐ›๋„๋ก ์„ ์–ธ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, URL์—์„œ ์—ฌ๋Ÿฌ๋ฒˆ ๋‚˜์˜ค๋Š” `q` ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

```Python hl_lines="9"
{!../../../docs_src/query_params_str_validations/tutorial011.py!}
```

์•„๋ž˜์™€ ๊ฐ™์€ URL์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

```
http://localhost:8000/items/?q=foo&q=bar
```

์—ฌ๋Ÿฌ `q` *์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜* ๊ฐ’๋“ค์„ (`foo` ๋ฐ `bar`) ํŒŒ์ด์ฌ `list`๋กœ *๊ฒฝ๋กœ ์ž‘๋™ ํ•จ์ˆ˜* ๋‚ด *ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜* `q`๋กœ ์ „๋‹ฌ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•ด๋‹น URL์— ๋Œ€ํ•œ ์‘๋‹ต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

```JSON
{
"q": [
"foo",
"bar"
]
}
```

!!! tip "ํŒ"
์œ„์˜ ์˜ˆ์™€ ๊ฐ™์ด `list` ์ž๋ฃŒํ˜•์œผ๋กœ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ ค๋ฉด `Query`๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์š”์ฒญ ๋ณธ๋ฌธ์œผ๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.

๋Œ€ํ™”ํ˜• API ๋ฌธ์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ’์„ ํ—ˆ์šฉํ•˜๋„๋ก ์ˆ˜์ • ๋ฉ๋‹ˆ๋‹ค:

<img src="/img/tutorial/query-params-str-validations/image02.png">

### ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฆฌ์ŠคํŠธ / ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์ค‘๊ฐ’

๊ทธ๋ฆฌ๊ณ  ์ œ๊ณต๋œ ๊ฐ’์ด ์—†์œผ๋ฉด ๊ธฐ๋ณธ `list` ๊ฐ’์„ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

```Python hl_lines="9"
{!../../../docs_src/query_params_str_validations/tutorial012.py!}
```

์•„๋ž˜๋กœ ์ด๋™ํ•œ๋‹ค๋ฉด:

```
http://localhost:8000/items/
```

`q`์˜ ๊ธฐ๋ณธ๊ฐ’์€: `["foo", "bar"]`์ด๋ฉฐ ์‘๋‹ต์€ ๋‹ค์Œ์ด ๋ฉ๋‹ˆ๋‹ค:

```JSON
{
"q": [
"foo",
"bar"
]
}
```

#### `list` ์‚ฌ์šฉํ•˜๊ธฐ

`List[str]` ๋Œ€์‹  `list`๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

```Python hl_lines="7"
{!../../../docs_src/query_params_str_validations/tutorial013.py!}
```

!!! note "์ฐธ๊ณ "
์ด ๊ฒฝ์šฐ FastAPI๋Š” ๋ฆฌ์ŠคํŠธ์˜ ๋‚ด์šฉ์„ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์Œ์„ ๋ช…์‹ฌํ•˜๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, `List[int]`๋Š” ๋ฆฌ์ŠคํŠธ ๋‚ด์šฉ์ด ์ •์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌ(๋ฐ ๋ฌธ์„œํ™”)ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ `list` ๋‹จ๋…์ผ ๊ฒฝ์šฐ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

## ๋” ๋งŽ์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„ ์–ธ

๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์ •๋ณด๋Š” ์ƒ์„ฑ๋œ OpenAPI์— ํฌํ•จ๋˜๊ณ  ๋ฌธ์„œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ์™ธ๋ถ€ ๋„๊ตฌ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

!!! note "์ฐธ๊ณ "
๋„๊ตฌ์— ๋”ฐ๋ผ OpenAPI ์ง€์› ์ˆ˜์ค€์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ์„ ๋ช…์‹ฌํ•˜๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ผ๋ถ€๋Š” ์•„์ง ์„ ์–ธ๋œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ํ‘œ์‹œํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์€ ์ด๋ฏธ ๊ฐœ๋ฐœ ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๋‹ค.

`title`์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

```Python hl_lines="10"
{!../../../docs_src/query_params_str_validations/tutorial007.py!}
```

๊ทธ๋ฆฌ๊ณ  `description`๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

```Python hl_lines="13"
{!../../../docs_src/query_params_str_validations/tutorial008.py!}
```

## ๋ณ„์นญ ๋งค๊ฐœ๋ณ€์ˆ˜

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ `item-query`์ด๊ธธ ์›ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค.

๋งˆ์น˜ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

```
http://127.0.0.1:8000/items/?item-query=foobaritems
```

๊ทธ๋Ÿฌ๋‚˜ `item-query`์€ ์œ ํšจํ•œ ํŒŒ์ด์ฌ ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ์€ `item_query`์ผ ๊ฒ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ •ํ™•ํžˆ`item-query`์ด๊ธธ ์›ํ•ฉ๋‹ˆ๋‹ค...

์ด๋Ÿด ๊ฒฝ์šฐ `alias`๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น ๋ณ„์นญ์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์„ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:

```Python hl_lines="9"
{!../../../docs_src/query_params_str_validations/tutorial009.py!}
```

## ๋งค๊ฐœ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ

์ด์ œ๋Š” ๋”์ด์ƒ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋งˆ์Œ์— ๋“ค์–ดํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค.

์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋™์•ˆ์€ ๋‚จ๊ฒจ๋‘ฌ์•ผ ํ•˜์ง€๋งŒ, <abbr title="๊ตฌ์‹์ด๋ฉฐ, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ถ”์ฒœ">์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค(deprecated)</abbr>๊ณ  ํ™•์‹คํ•˜๊ฒŒ ๋ฌธ์„œ์—์„œ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด `deprecated=True` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ `Query`๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค:

```Python hl_lines="18"
{!../../../docs_src/query_params_str_validations/tutorial010.py!}
```

๋ฌธ์„œ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด์ผ๊ฒ๋‹ˆ๋‹ค:

<img src="/img/tutorial/query-params-str-validations/image01.png">

## ์š”์•ฝ

๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ฒ€์ฆ๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๋„ค๋ฆญ ๊ฒ€์ฆ๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ:

* `alias`
* `title`
* `description`
* `deprecated`

ํŠน์ • ๋ฌธ์ž์—ด ๊ฒ€์ฆ:

* `min_length`
* `max_length`
* `regex`

์˜ˆ์ œ์—์„œ `str` ๊ฐ’์˜ ๊ฒ€์ฆ์„ ์–ด๋–ป๊ฒŒ ์ถ”๊ฐ€ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ˆซ์ž์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์— ๋Œ€ํ•œ ๊ฒ€์ฆ์„ ์–ด๋–ป๊ฒŒ ์„ ์–ธํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ์žฅ์„ ํ™•์ธํ•˜๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

0 comments on commit 87a4c9e

Please sign in to comment.