Skip to content

Commit 23821e9

Browse files
valentinDruzhininValentyn Druzhyninalejsdevsvlandeg
authored
🌐 Add Ukrainian translation for docs/uk/docs/tutorial/query-params.md (fastapi#13362)
Co-authored-by: Valentyn Druzhynin <[email protected]> Co-authored-by: Alejandra <[email protected]> Co-authored-by: Sofie Van Landeghem <[email protected]>
1 parent 8bfec9f commit 23821e9

File tree

1 file changed

+192
-0
lines changed

1 file changed

+192
-0
lines changed
Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
# Query Параметри
2+
3+
Коли Ви оголошуєте інші параметри функції, які не є частиною параметрів шляху, вони автоматично інтерпретуються як "query" параметри.
4+
5+
{* ../../docs_src/query_params/tutorial001.py hl[9] *}
6+
7+
Query параметри — це набір пар ключ-значення, що йдуть після символу `?` в URL, розділені символами `&`.
8+
9+
Наприклад, в URL:
10+
11+
```
12+
http://127.0.0.1:8000/items/?skip=0&limit=10
13+
```
14+
15+
...query параметрами є:
16+
17+
* `skip`: зі значенням `0`
18+
* `limit`: зі значенням `10`
19+
20+
Оскільки вони є частиною URL, вони "за замовчуванням" є рядками.
21+
22+
Але коли Ви оголошуєте їх із типами Python (у наведеному прикладі як `int`), вони перетворюються на цей тип і проходять перевірку відповідності.
23+
24+
Увесь той самий процес, який застосовується до параметрів шляху, також застосовується до query параметрів:
25+
26+
* Підтримка в редакторі (автодоповнення, перевірка помилок)
27+
* <abbr title="перетворення рядка, що надходить з HTTP-запиту, у типи даних Python">"Парсинг"</abbr> даних
28+
* Валідація даних
29+
* Автоматична документація
30+
31+
32+
## Значення за замовчуванням
33+
34+
Оскільки query параметри не є фіксованою частиною шляху, вони можуть бути необов’язковими та мати значення за замовчуванням.
35+
36+
У наведеному вище прикладі вони мають значення за замовчуванням: `skip=0` і `limit=10`.
37+
38+
Отже, результат переходу за URL:
39+
40+
```
41+
http://127.0.0.1:8000/items/
42+
```
43+
буде таким самим, як і перехід за посиланням:
44+
45+
```
46+
http://127.0.0.1:8000/items/?skip=0&limit=10
47+
```
48+
49+
Але якщо Ви перейдете, наприклад, за посиланням:
50+
51+
```
52+
http://127.0.0.1:8000/items/?skip=20
53+
```
54+
55+
Значення параметрів у вашій функції будуть такими:
56+
57+
* `skip=20`: оскільки Ви вказали його в URL
58+
* `limit=10`: оскільки це значення за замовчуванням
59+
60+
## Необов'язкові параметри
61+
62+
Аналогічно, Ви можете оголосити необов’язкові query параметри, встановивши для них значення за замовчуванням `None`:
63+
64+
{* ../../docs_src/query_params/tutorial002_py310.py hl[7] *}
65+
66+
У цьому випадку параметр функції `q` буде необов’язковим і за замовчуванням матиме значення `None`.
67+
68+
/// check | Примітка
69+
70+
Також зверніть увагу, що **FastAPI** достатньо розумний, щоб визначити, що параметр шляху `item_id` є параметром шляху, а `q` — ні, отже, це query параметр.
71+
72+
///
73+
74+
## Перетворення типу Query параметра
75+
76+
Ви також можете оголошувати параметри типу `bool`, і вони будуть автоматично конвертовані:
77+
78+
{* ../../docs_src/query_params/tutorial003_py310.py hl[7] *}
79+
80+
У цьому випадку, якщо Ви звернетесь до:
81+
82+
83+
```
84+
http://127.0.0.1:8000/items/foo?short=1
85+
```
86+
87+
або
88+
89+
```
90+
http://127.0.0.1:8000/items/foo?short=True
91+
```
92+
93+
або
94+
95+
```
96+
http://127.0.0.1:8000/items/foo?short=true
97+
```
98+
99+
або
100+
101+
```
102+
http://127.0.0.1:8000/items/foo?short=on
103+
```
104+
105+
або
106+
107+
```
108+
http://127.0.0.1:8000/items/foo?short=yes
109+
```
110+
111+
або будь-який інший варіант написання (великі літери, перша літера велика тощо), ваша функція побачить параметр `short` зі значенням `True` з типом даних `bool`. В іншому випадку – `False`.
112+
113+
## Кілька path і query параметрів
114+
115+
Ви можете одночасно оголошувати кілька path і query параметрів, і **FastAPI** автоматично визначить, який з них до чого належить.
116+
117+
118+
Не потрібно дотримуватись певного порядку їх оголошення.
119+
120+
Вони визначаються за назвою:
121+
122+
{* ../../docs_src/query_params/tutorial004_py310.py hl[6,8] *}
123+
124+
## Обов’язкові Query параметри
125+
126+
Якщо Ви оголошуєте значення за замовчуванням для параметрів, які не є path-параметрами (у цьому розділі ми бачили поки що лише path параметри), тоді вони стають необов’язковими.
127+
128+
Якщо Ви не хочете вказувати конкретні значення, але хочете зробити параметр опціональним, задайте `None` як значення за замовчуванням.
129+
130+
Але якщо Ви хочете зробити query параметр обов’язковим, просто не вказуйте для нього значення за замовчуванням:
131+
132+
{* ../../docs_src/query_params/tutorial005.py hl[6:7] *}
133+
134+
Тут `needy` – обов’язковий query параметр типу `str`.
135+
136+
Якщо Ви відкриєте у браузері URL-адресу:
137+
138+
```
139+
http://127.0.0.1:8000/items/foo-item
140+
```
141+
142+
...без додавання обов’язкового параметра `needy`, Ви побачите помилку:
143+
144+
```JSON
145+
{
146+
"detail": [
147+
{
148+
"type": "missing",
149+
"loc": [
150+
"query",
151+
"needy"
152+
],
153+
"msg": "Field required",
154+
"input": null,
155+
"url": "https://errors.pydantic.dev/2.1/v/missing"
156+
}
157+
]
158+
}
159+
```
160+
161+
Оскільки `needy` є обов’язковим параметром, вам потрібно вказати його в URL:
162+
163+
```
164+
http://127.0.0.1:8000/items/foo-item?needy=sooooneedy
165+
```
166+
167+
...цей запит поверне:
168+
169+
```JSON
170+
{
171+
"item_id": "foo-item",
172+
"needy": "sooooneedy"
173+
}
174+
```
175+
176+
177+
Звичайно, Ви можете визначити деякі параметри як обов’язкові, інші зі значенням за замовчуванням, а ще деякі — повністю опціональні:
178+
179+
{* ../../docs_src/query_params/tutorial006_py310.py hl[8] *}
180+
181+
У цьому випадку є 3 query параметри:
182+
183+
* `needy`, обов’язковий `str`.
184+
* `skip`, `int` зі значенням за замовчуванням `0`.
185+
* `limit`, опціональний `int`.
186+
187+
188+
/// tip | Підказка
189+
190+
Ви також можете використовувати `Enum`-и, так само як і з [Path Parameters](path-params.md#predefined-values){.internal-link target=_blank}.
191+
192+
///

0 commit comments

Comments
 (0)