# ๐ข ๐ข & ๐ป ๐ฌ
**FastAPI** โ ๐ ๐ฃ ๐ โน & ๐ฌ ๐ ๐ข.
โก๏ธ โ ๐ ๐ธ ๐ผ:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="9"
{!> ../../../docs_src/query_params_str_validations/tutorial001.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="7"
{!> ../../../docs_src/query_params_str_validations/tutorial001_py310.py!}
```
๐ข ๐ข `q` ๐ `Union[str, None]` (โ๏ธ `str | None` ๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ), ๐ โ ๐ โซ๏ธ ๐ `str` โ๏ธ ๐ช `None`, & ๐, ๐ข ๐ฒ `None`, FastAPI ๐ ๐ญ โซ๏ธ ๐ซ โ.
!!! note
FastAPI ๐ ๐ญ ๐ ๐ฒ `q` ๐ซ โ โฉ๏ธ ๐ข ๐ฒ `= None`.
`Union` `Union[str, None]` ๐ โ ๐ ๐จโ๐จ ๐ค ๐ ๐ ๐โ๐ฆบ & ๐ โ.
## ๐ ๐ฌ
๐ฅ ๐ ๐ ๏ธ ๐ โ๏ธ `q` ๐ฆ, ๐โ โซ๏ธ ๐, **๐ฎ ๐ ๐ซ ๐ 5๏ธโฃ0๏ธโฃ ๐ฆน**.
### ๐ `Query`
๐ ๐, ๐ฅ ๐ `Query` โช๏ธโก๏ธ `fastapi`:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="3"
{!> ../../../docs_src/query_params_str_validations/tutorial002.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="1"
{!> ../../../docs_src/query_params_str_validations/tutorial002_py310.py!}
```
## โ๏ธ `Query` ๐ข ๐ฒ
& ๐ โ๏ธ โซ๏ธ ๐ข ๐ฒ ๐ ๐ข, โ ๐ข `max_length` 5๏ธโฃ0๏ธโฃ:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="9"
{!> ../../../docs_src/query_params_str_validations/tutorial002.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="7"
{!> ../../../docs_src/query_params_str_validations/tutorial002_py310.py!}
```
๐ฅ โ๏ธ โ ๐ข ๐ฒ `None` ๐ข โฎ๏ธ `Query()`, ๐ฅ ๐ช ๐ โ ๐ข ๐ฒ โฎ๏ธ ๐ข `Query(default=None)`, โซ๏ธ ๐ฆ ๐ ๐ฏ โ ๐ ๐ข ๐ฒ.
:
```Python
q: Union[str, None] = Query(default=None)
```
...โ ๐ข ๐ฆ, ๐:
```Python
q: Union[str, None] = None
```
& ๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐:
```Python
q: str | None = Query(default=None)
```
...โ ๐ข ๐ฆ, ๐:
```Python
q: str | None = None
```
โ๏ธ โซ๏ธ ๐ฃ โซ๏ธ ๐ฏ ๐โโ ๐ข ๐ข.
!!! info
โ๏ธ ๐คฏ ๐ ๐
โ ๐ โ ๐ข ๐ฆ ๐:
```Python
= None
```
โ๏ธ:
```Python
= Query(default=None)
```
โซ๏ธ ๐ โ๏ธ ๐ `None` ๐ข ๐ฒ, & ๐ ๐ โ ๐ข **๐ซ โ**.
`Union[str, None]` ๐ โ ๐ ๐จโ๐จ ๐ ๐ป ๐โ๐ฆบ, โ๏ธ โซ๏ธ ๐ซ โซ๏ธโ ๐ฌ FastAPI ๐ ๐ ๐ข ๐ซ โ.
โคด๏ธ, ๐ฅ ๐ช ๐ถโโ๏ธ ๐
๐ข `Query`. ๐ ๐ผ, `max_length` ๐ข ๐ โ ๐ป:
```Python
q: Union[str, None] = Query(default=None, max_length=50)
```
๐ ๐ โ ๐, ๐ฆ ๐ โ ๐โ ๐ ๐ซ โ, & ๐ ๐ข ๐ ๐ *โก ๐ ๏ธ*.
## ๐ฎ ๐
๐ฌ
๐ ๐ช ๐ฎ ๐ข `min_length`:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="10"
{!> ../../../docs_src/query_params_str_validations/tutorial003.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="7"
{!> ../../../docs_src/query_params_str_validations/tutorial003_py310.py!}
```
## ๐ฎ ๐ฅ ๐งฌ
๐ ๐ช ๐ฌ ๐ฅ ๐งฌ ๐ ๐ข ๐ ๐:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="11"
{!> ../../../docs_src/query_params_str_validations/tutorial004.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="9"
{!> ../../../docs_src/query_params_str_validations/tutorial004_py310.py!}
```
๐ ๐ฏ ๐ฅ ๐งฌ โ
๐ ๐จ ๐ข ๐ฒ:
* `^`: โถ๏ธ โฎ๏ธ ๐ ๐ฆน, ๐ซ โ๏ธ ๐ฆน โญ.
* `fixedquery`: โ๏ธ โ ๐ฒ `fixedquery`.
* `$`: ๐ ๐ค, ๐ซ โ๏ธ ๐ ๐ ๐ฆน โฎ๏ธ `fixedquery`.
๐ฅ ๐ ๐ญ ๐ธ โฎ๏ธ ๐ ๐ **"๐ฅ ๐งฌ"** ๐ญ, ๐ซ ๐. ๐ซ ๐๏ธ โ ๐ ๐ซ๐ซ. ๐ ๐ช ๐ ๐ฉ ๐ต ๐โโ ๐ฅ ๐งฌ.
โ๏ธ ๐โ ๐ ๐ช ๐ซ & ๐ถ & ๐ก ๐ซ, ๐ญ ๐ ๐ ๐ช โช โ๏ธ ๐ซ ๐ **FastAPI**.
## ๐ข ๐ฒ
๐ ๐ ๐ ๐ ๐ช ๐ถโโ๏ธ `None` ๐ฒ `default` ๐ข, ๐ ๐ช ๐ถโโ๏ธ ๐ ๐ฒ.
โก๏ธ ๐ฌ ๐ ๐ ๐ ๐ฃ `q` ๐ข ๐ข โ๏ธ `min_length` `3`, & โ๏ธ ๐ข ๐ฒ `"fixedquery"`:
```Python hl_lines="7"
{!../../../docs_src/query_params_str_validations/tutorial005.py!}
```
!!! note
โ๏ธ ๐ข ๐ฒ โ ๐ข ๐ฆ.
## โ โซ๏ธ โ
๐โ ๐ฅ ๐ซ ๐ช ๐ฃ ๐
๐ฌ โ๏ธ ๐, ๐ฅ ๐ช โ `q` ๐ข ๐ข โ ๐ซ ๐ฃ ๐ข ๐ฒ, ๐:
```Python
q: str
```
โฉ๏ธ:
```Python
q: Union[str, None] = None
```
โ๏ธ ๐ฅ ๐ ๐ฃ โซ๏ธ โฎ๏ธ `Query`, ๐ผ ๐:
```Python
q: Union[str, None] = Query(default=None, min_length=3)
```
, ๐โ ๐ ๐ช ๐ฃ ๐ฒ โ โช โ๏ธ `Query`, ๐ ๐ช ๐ฏ ๐ซ ๐ฃ ๐ข ๐ฒ:
```Python hl_lines="7"
{!../../../docs_src/query_params_str_validations/tutorial006.py!}
```
### โ โฎ๏ธ โ (`...`)
๐ค ๐ ๐ ๐ฏ ๐ฃ ๐ ๐ฒ โ. ๐ ๐ช โ `default` ๐ข ๐ ๐ฒ `...`:
```Python hl_lines="7"
{!../../../docs_src/query_params_str_validations/tutorial006b.py!}
```
!!! info
๐ฅ ๐ ๐ซ ๐ ๐ `...` โญ: โซ๏ธ ๐ ๐ ๐ฒ, โซ๏ธ ๐ ๐ & ๐ค "โ".
โซ๏ธ โ๏ธ Pydantic & FastAPI ๐ฏ ๐ฃ ๐ ๐ฒ โ.
๐ ๐ โก๏ธ **FastAPI** ๐ญ ๐ ๐ ๐ข โ.
### โ โฎ๏ธ `None`
๐ ๐ช ๐ฃ ๐ ๐ข ๐ช ๐ซ `None`, โ๏ธ ๐ โซ๏ธ โ. ๐ ๐ โก ๐ฉโ๐ป ๐จ ๐ฒ, ๐ฅ ๐ฒ `None`.
๐, ๐ ๐ช ๐ฃ ๐ `None` โ ๐ โ๏ธ โ๏ธ `default=...`:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="9"
{!> ../../../docs_src/query_params_str_validations/tutorial006c.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="7"
{!> ../../../docs_src/query_params_str_validations/tutorial006c_py310.py!}
```
!!! tip
Pydantic, โ โซ๏ธโ ๐๏ธ ๐ ๐ฝ ๐ฌ & ๐ ๏ธ FastAPI, โ๏ธ ๐ ๐ญ ๐โ ๐ โ๏ธ `Optional` โ๏ธ `Union[Something, None]` ๐ต ๐ข ๐ฒ, ๐ ๐ช โ ๐
๐ โซ๏ธ Pydantic ๐ฉบ ๐ โ ๐ฆ ๐.
### โ๏ธ Pydantic `Required` โฉ๏ธ โ (`...`)
๐ฅ ๐ ๐ญ ๐ฌ โ๏ธ `...`, ๐ ๐ช ๐ & โ๏ธ `Required` โช๏ธโก๏ธ Pydantic:
```Python hl_lines="2 8"
{!../../../docs_src/query_params_str_validations/tutorial006d.py!}
```
!!! tip
๐ญ ๐ ๐
๐ผ, ๐โ ๐ณ ๐, ๐ ๐ช ๐ฏ ๐ซ `default` ๐ข, ๐ ๐ ๐ซ โ๏ธ โ๏ธ `...` ๐ซ `Required`.
## ๐ข ๐ข ๐ / ๐ ๐ฒ
๐โ ๐ ๐ฌ ๐ข ๐ข ๐ฏ โฎ๏ธ `Query` ๐ ๐ช ๐ฃ โซ๏ธ ๐จ ๐ ๐ฒ, โ๏ธ ๐โโ ๐ ๐, ๐จ ๐ ๐ฒ.
๐ผ, ๐ฃ ๐ข ๐ข `q` ๐ ๐ช ๐ ๐ ๐ฐ ๐, ๐ ๐ช โ:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="9"
{!> ../../../docs_src/query_params_str_validations/tutorial011.py!}
```
=== "๐ 3๏ธโฃ.9๏ธโฃ & ๐"
```Python hl_lines="9"
{!> ../../../docs_src/query_params_str_validations/tutorial011_py39.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="7"
{!> ../../../docs_src/query_params_str_validations/tutorial011_py310.py!}
```
โคด๏ธ, โฎ๏ธ ๐ ๐:
```
http://localhost:8000/items/?q=foo&q=bar
```
๐ ๐ ๐จ ๐ `q` *๐ข ๐ข'* ๐ฒ (`foo` & `bar`) ๐ `list` ๐ ๐ *โก ๐ ๏ธ ๐ข*, *๐ข ๐ข* `q`.
, ๐จ ๐ ๐ ๐:
```JSON
{
"q": [
"foo",
"bar"
]
}
```
!!! tip
๐ฃ ๐ข ๐ข โฎ๏ธ ๐ `list`, ๐ ๐ผ ๐, ๐ ๐ช ๐ฏ โ๏ธ `Query`, โช โซ๏ธ ๐ ๐ฌ ๐จ ๐ช.
๐ ๐ ๏ธ ๐ฉบ ๐ โน โก๏ธ, โ ๐ ๐ฒ:
### ๐ข ๐ข ๐ / ๐ ๐ฒ โฎ๏ธ ๐ข
& ๐ ๐ช ๐ฌ ๐ข `list` ๐ฒ ๐ฅ ๐ ๐:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="9"
{!> ../../../docs_src/query_params_str_validations/tutorial012.py!}
```
=== "๐ 3๏ธโฃ.9๏ธโฃ & ๐"
```Python hl_lines="7"
{!> ../../../docs_src/query_params_str_validations/tutorial012_py39.py!}
```
๐ฅ ๐ ๐ถ:
```
http://localhost:8000/items/
```
๐ข `q` ๐: `["foo", "bar"]` & ๐ ๐จ ๐:
```JSON
{
"q": [
"foo",
"bar"
]
}
```
#### โ๏ธ `list`
๐ ๐ช โ๏ธ `list` ๐ โฉ๏ธ `List[str]` (โ๏ธ `list[str]` ๐ 3๏ธโฃ.9๏ธโฃ โ):
```Python hl_lines="7"
{!../../../docs_src/query_params_str_validations/tutorial013.py!}
```
!!! note
โ๏ธ ๐คฏ ๐ ๐ ๐ผ, FastAPI ๐ ๐ซ โ
๐ ๐.
๐ผ, `List[int]` ๐ โ
(& ๐) ๐ ๐ ๐ ๐ข. โ๏ธ `list` ๐ ๐ซ๐.
## ๐ฃ ๐
๐
๐ ๐ช ๐ฎ ๐
โน ๐ ๐ข.
๐ โน ๐ ๐ ๐ ๐ & โ๏ธ ๐งพ ๐ฉโ๐ป ๐ข & ๐ข ๐งฐ.
!!! note
โ๏ธ ๐คฏ ๐ ๐ ๐งฐ 5๏ธโฃ๐ โ๏ธ ๐ ๐ ๐ ๐โ๐ฆบ.
๐ซ ๐ช ๐ซ ๐ฆ ๐ โ โน ๐ฃ, ๐ ๐
๐ผ, โ โ โช ๐ ๐ ๏ธ.
๐ ๐ช ๐ฎ `title`:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="10"
{!> ../../../docs_src/query_params_str_validations/tutorial007.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="8"
{!> ../../../docs_src/query_params_str_validations/tutorial007_py310.py!}
```
& `description`:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="13"
{!> ../../../docs_src/query_params_str_validations/tutorial008.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="11"
{!> ../../../docs_src/query_params_str_validations/tutorial008_py310.py!}
```
## ๐ ๐ข
๐ ๐ ๐ ๐ ๐ข `item-query`.
๐:
```
http://127.0.0.1:8000/items/?item-query=foobaritems
```
โ๏ธ `item-query` ๐ซ โ ๐ ๐ข ๐.
๐ ๐ `item_query`.
โ๏ธ ๐ ๐ช โซ๏ธ โซ๏ธโ `item-query`...
โคด๏ธ ๐ ๐ช ๐ฃ `alias`, & ๐ ๐ โซ๏ธโ ๐ โ๏ธ ๐ ๐ข ๐ฒ:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="9"
{!> ../../../docs_src/query_params_str_validations/tutorial009.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="7"
{!> ../../../docs_src/query_params_str_validations/tutorial009_py310.py!}
```
## ๐ ๐ข
๐ โก๏ธ ๐ฌ ๐ ๐ซ ๐ ๐ ๐ข ๐ซ๐.
๐ โ๏ธ ๐ โซ๏ธ ๐ค โช โฉ๏ธ ๐ค ๐ฉโ๐ป โ๏ธ โซ๏ธ, โ๏ธ ๐ ๐ ๐ฉบ ๐ฏ ๐ฆ โซ๏ธ ๐ข.
โคด๏ธ ๐ถโโ๏ธ ๐ข `deprecated=True` `Query`:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="18"
{!> ../../../docs_src/query_params_str_validations/tutorial010.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="16"
{!> ../../../docs_src/query_params_str_validations/tutorial010_py310.py!}
```
๐ฉบ ๐ ๐ฆ โซ๏ธ ๐ ๐:
## ๐ซ โช๏ธโก๏ธ ๐
๐ซ ๐ข ๐ข โช๏ธโก๏ธ ๐ ๐ ๐ (& โก๏ธ, โช๏ธโก๏ธ ๐ง ๐งพ โ๏ธ), โ ๐ข `include_in_schema` `Query` `False`:
=== "๐ 3๏ธโฃ.6๏ธโฃ & ๐"
```Python hl_lines="10"
{!> ../../../docs_src/query_params_str_validations/tutorial014.py!}
```
=== "๐ 3๏ธโฃ.1๏ธโฃ0๏ธโฃ & ๐"
```Python hl_lines="8"
{!> ../../../docs_src/query_params_str_validations/tutorial014_py310.py!}
```
## ๐
๐ ๐ช ๐ฃ ๐ ๐ฌ & ๐ ๐ ๐ข.
๐ ๐ฌ & ๐:
* `alias`
* `title`
* `description`
* `deprecated`
๐ฌ ๐ฏ ๐ป:
* `min_length`
* `max_length`
* `regex`
๐ซ ๐ผ ๐ ๐ โ ๐ฃ ๐ฌ `str` ๐ฒ.
๐ โญ ๐ ๐ โ ๐ฃ ๐ฌ ๐ ๐, ๐ ๐ข.