mirror of https://github.com/tiangolo/fastapi.git
🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/query-params.md` (#13362)
Co-authored-by: Valentyn Druzhynin <v.druzhynin@zakaz.global> Co-authored-by: Alejandra <90076947+alejsdev@users.noreply.github.com> Co-authored-by: Sofie Van Landeghem <svlandeg@users.noreply.github.com>
This commit is contained in:
parent
8bfec9fb6b
commit
23821e916b
|
|
@ -0,0 +1,192 @@
|
|||
# Query Параметри
|
||||
|
||||
Коли Ви оголошуєте інші параметри функції, які не є частиною параметрів шляху, вони автоматично інтерпретуються як "query" параметри.
|
||||
|
||||
{* ../../docs_src/query_params/tutorial001.py hl[9] *}
|
||||
|
||||
Query параметри — це набір пар ключ-значення, що йдуть після символу `?` в URL, розділені символами `&`.
|
||||
|
||||
Наприклад, в URL:
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/items/?skip=0&limit=10
|
||||
```
|
||||
|
||||
...query параметрами є:
|
||||
|
||||
* `skip`: зі значенням `0`
|
||||
* `limit`: зі значенням `10`
|
||||
|
||||
Оскільки вони є частиною URL, вони "за замовчуванням" є рядками.
|
||||
|
||||
Але коли Ви оголошуєте їх із типами Python (у наведеному прикладі як `int`), вони перетворюються на цей тип і проходять перевірку відповідності.
|
||||
|
||||
Увесь той самий процес, який застосовується до параметрів шляху, також застосовується до query параметрів:
|
||||
|
||||
* Підтримка в редакторі (автодоповнення, перевірка помилок)
|
||||
* <abbr title="перетворення рядка, що надходить з HTTP-запиту, у типи даних Python">"Парсинг"</abbr> даних
|
||||
* Валідація даних
|
||||
* Автоматична документація
|
||||
|
||||
|
||||
## Значення за замовчуванням
|
||||
|
||||
Оскільки query параметри не є фіксованою частиною шляху, вони можуть бути необов’язковими та мати значення за замовчуванням.
|
||||
|
||||
У наведеному вище прикладі вони мають значення за замовчуванням: `skip=0` і `limit=10`.
|
||||
|
||||
Отже, результат переходу за URL:
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/items/
|
||||
```
|
||||
буде таким самим, як і перехід за посиланням:
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/items/?skip=0&limit=10
|
||||
```
|
||||
|
||||
Але якщо Ви перейдете, наприклад, за посиланням:
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/items/?skip=20
|
||||
```
|
||||
|
||||
Значення параметрів у вашій функції будуть такими:
|
||||
|
||||
* `skip=20`: оскільки Ви вказали його в URL
|
||||
* `limit=10`: оскільки це значення за замовчуванням
|
||||
|
||||
## Необов'язкові параметри
|
||||
|
||||
Аналогічно, Ви можете оголосити необов’язкові query параметри, встановивши для них значення за замовчуванням `None`:
|
||||
|
||||
{* ../../docs_src/query_params/tutorial002_py310.py hl[7] *}
|
||||
|
||||
У цьому випадку параметр функції `q` буде необов’язковим і за замовчуванням матиме значення `None`.
|
||||
|
||||
/// check | Примітка
|
||||
|
||||
Також зверніть увагу, що **FastAPI** достатньо розумний, щоб визначити, що параметр шляху `item_id` є параметром шляху, а `q` — ні, отже, це query параметр.
|
||||
|
||||
///
|
||||
|
||||
## Перетворення типу Query параметра
|
||||
|
||||
Ви також можете оголошувати параметри типу `bool`, і вони будуть автоматично конвертовані:
|
||||
|
||||
{* ../../docs_src/query_params/tutorial003_py310.py hl[7] *}
|
||||
|
||||
У цьому випадку, якщо Ви звернетесь до:
|
||||
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/items/foo?short=1
|
||||
```
|
||||
|
||||
або
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/items/foo?short=True
|
||||
```
|
||||
|
||||
або
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/items/foo?short=true
|
||||
```
|
||||
|
||||
або
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/items/foo?short=on
|
||||
```
|
||||
|
||||
або
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/items/foo?short=yes
|
||||
```
|
||||
|
||||
або будь-який інший варіант написання (великі літери, перша літера велика тощо), ваша функція побачить параметр `short` зі значенням `True` з типом даних `bool`. В іншому випадку – `False`.
|
||||
|
||||
## Кілька path і query параметрів
|
||||
|
||||
Ви можете одночасно оголошувати кілька path і query параметрів, і **FastAPI** автоматично визначить, який з них до чого належить.
|
||||
|
||||
|
||||
Не потрібно дотримуватись певного порядку їх оголошення.
|
||||
|
||||
Вони визначаються за назвою:
|
||||
|
||||
{* ../../docs_src/query_params/tutorial004_py310.py hl[6,8] *}
|
||||
|
||||
## Обов’язкові Query параметри
|
||||
|
||||
Якщо Ви оголошуєте значення за замовчуванням для параметрів, які не є path-параметрами (у цьому розділі ми бачили поки що лише path параметри), тоді вони стають необов’язковими.
|
||||
|
||||
Якщо Ви не хочете вказувати конкретні значення, але хочете зробити параметр опціональним, задайте `None` як значення за замовчуванням.
|
||||
|
||||
Але якщо Ви хочете зробити query параметр обов’язковим, просто не вказуйте для нього значення за замовчуванням:
|
||||
|
||||
{* ../../docs_src/query_params/tutorial005.py hl[6:7] *}
|
||||
|
||||
Тут `needy` – обов’язковий query параметр типу `str`.
|
||||
|
||||
Якщо Ви відкриєте у браузері URL-адресу:
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/items/foo-item
|
||||
```
|
||||
|
||||
...без додавання обов’язкового параметра `needy`, Ви побачите помилку:
|
||||
|
||||
```JSON
|
||||
{
|
||||
"detail": [
|
||||
{
|
||||
"type": "missing",
|
||||
"loc": [
|
||||
"query",
|
||||
"needy"
|
||||
],
|
||||
"msg": "Field required",
|
||||
"input": null,
|
||||
"url": "https://errors.pydantic.dev/2.1/v/missing"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Оскільки `needy` є обов’язковим параметром, вам потрібно вказати його в URL:
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/items/foo-item?needy=sooooneedy
|
||||
```
|
||||
|
||||
...цей запит поверне:
|
||||
|
||||
```JSON
|
||||
{
|
||||
"item_id": "foo-item",
|
||||
"needy": "sooooneedy"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Звичайно, Ви можете визначити деякі параметри як обов’язкові, інші зі значенням за замовчуванням, а ще деякі — повністю опціональні:
|
||||
|
||||
{* ../../docs_src/query_params/tutorial006_py310.py hl[8] *}
|
||||
|
||||
У цьому випадку є 3 query параметри:
|
||||
|
||||
* `needy`, обов’язковий `str`.
|
||||
* `skip`, `int` зі значенням за замовчуванням `0`.
|
||||
* `limit`, опціональний `int`.
|
||||
|
||||
|
||||
/// tip | Підказка
|
||||
|
||||
Ви також можете використовувати `Enum`-и, так само як і з [Path Parameters](path-params.md#predefined-values){.internal-link target=_blank}.
|
||||
|
||||
///
|
||||
Loading…
Reference in New Issue