Параметри запиту — це пари ключ-значення, що додаються до URL після знаку питання:
```
https://apilearn.tukas.dev/api/products/?category=kitchen&ordering=price
```
Вони дозволяють серверу зрозуміти, що ви хочете: яку категорію, яку сторінку, як сортувати. Можна будувати такий рядок вручну, але бібліотека requests пропонує зручніший спосіб: передайте dict як аргумент params, і вона сама вирішить кодування:
```python
import requests
BASE_URL = 'https://apilearn.tukas.dev'
params = {
'category': 'kitchen',
'ordering': 'price',
}
response = requests.get(f'{BASE_URL}/api/products/', params=params)
print(response.url) # показує повний URL, що був надісланий
```
response.url корисний для налагодження — він показує точний URL, що побудувала бібліотека, включаючи всі закодовані параметри.
Ендпоінт /api/products/ приймає такі параметри:
- category — фільтр за slug категорії (наприклад, 'kitchen', 'bedroom')
- ordering — поле сортування; префікс - для спадного порядку (наприклад, 'price', '-price', 'name')
- search — повнотекстовий пошук у назвах та описах продуктів
- min_price / max_price — фільтр за діапазоном ціни
- has_discount — встановіть 'true', щоб повернути лише продукти зі знижкою
- page / page_size — пагінація (розглядається в темі Pagination)
Параметри можна вільно комбінувати. Сервер застосовує всі фільтри разом, тому можна запросити товари для спальні до $200, відсортовані за назвою, одним запитом.
Фільтр за однією категорією:
```python
response = requests.get(f'{BASE_URL}/api/products/', params={'category': 'office'})
data = response.json()
print(data['count']) # продукти лише в категорії office
```
Фільтр за діапазоном ціни:
```python
params = {'min_price': 50, 'max_price': 150}
response = requests.get(f'{BASE_URL}/api/products/', params=params)
for product in response.json()['results']:
print(product['name'], product['sell_price'])
```
Сортування за ціною спадно (найдорожчі першими):
```python
params = {'ordering': '-price', 'page_size': 5}
response = requests.get(f'{BASE_URL}/api/products/', params=params)
for p in response.json()['results']:
print(p['name'], p['price'])
```
Пошук за ключовим словом:
```python
params = {'search': 'chair'}
response = requests.get(f'{BASE_URL}/api/products/', params=params)
print(response.json()['count'], 'продуктів знайдено')
```
Комбінація кількох фільтрів в одному запиті:
```python
params = {
'category': 'bedroom',
'max_price': 300,
'has_discount': 'true',
'ordering': 'name',
}
response = requests.get(f'{BASE_URL}/api/products/', params=params)
data = response.json()
print(f'{data["count"]} знижених товарів для спальні до $300')
```
Зверніть увагу: has_discount приймає рядок 'true', а не булеве значення Python True. Параметри запиту в HTTP — завжди рядки; requests конвертує прості значення, але з булевоподібними прапорами найкраще бути явними.
Параметри запиту для GET /api/products/:
```
category string Slug категорії: kitchen, bedroom, living-room, office,
hardware, decor, bathroom, kids-room, outdoor,
dining-room, storage, lighting
ordering string Поле сортування. Префікс - для спадного порядку:
price, -price, name, -name
search string Повнотекстовий пошук у назві та описі
min_price number Мінімальна ціна (включно)
max_price number Максимальна ціна (включно)
has_discount string 'true' — повернути лише продукти зі знижкою
page int Номер сторінки (за замовчуванням: 1)
page_size int Елементів на сторінці (за замовчуванням: 20)
```
Усі параметри необов'язкові та можуть комбінуватися. Відповідь завжди містить count, next, previous і results.
Швидкі приклади:
```python
# 5 найдешевших товарів у категорії kitchen
params = {'category': 'kitchen', 'ordering': 'price', 'page_size': 5}
# Усі товари зі знижкою
params = {'has_discount': 'true'}
# Продукти за запитом 'table' від $50 до $300
params = {'search': 'table', 'min_price': 50, 'max_price': 300}
```
Отримайте знижені продукти в категорії "dining-room" з ціною до $400, відсортовані за назвою в алфавітному порядку. Виведіть назву і sell_price кожного результату.
Побудуйте запит з category="office", ordering="-price", page_size=3. Перед тим як зчитати відповідь, виведіть повний URL, який requests побудував (включно з усіма параметрами запиту).
import requests
BASE_URL = 'https://apilearn.tukas.dev'
params = {
'category': 'office',
'ordering': '-price',
'page_size': 3,
}
response = requests.get(f'{BASE_URL}/api/products/', params=params)
# Виведіть повний URL, який було надіслано
Ми використовуємо необхідні cookies для роботи сайту. З вашого дозволу ми також можемо зберігати налаштування сайту та використовувати аналітичні й рекламні cookies, щоб розуміти використання сайту й підтримувати розвиток проєкту.
* Ви завжди можете змінити свій вибір у налаштуваннях сайту.
Оберіть категорії cookies
Налаштування аналітики
Можна вимкнути аналітику використання платформи. Також можна надіслати в Google Analytics запит на видалення даних про використання цього сайту, пов'язаних із цим браузером.
Навчальний workspace
Навчайтеся, читаючи, запускаючи код і розв'язуючи задачі.
Практикуйте програмування з поясненнями тем, вправами, інструментами browser IDE, перевіркою regex і тренуванням друку коду в одному workspace.
Відкривайте інструменти у вкладках.Вправи, IDE-інструменти й тренажери залишаються доступними як вкладки сайту.
Перемикайтеся без втрати контексту.Переходьте між поясненнями, кодом та утилітами, зберігаючи своє місце.
Використовуйте sidebar як карту.Ліві панелі містять навігацію, налаштування, файли, libraries та керування інструментами.
PythonJavaScriptSQLite
Одна IDE, три практичні режими
Python у браузері.Запускайте невеликі скрипти, пробуйте бібліотеки й тренуйте API-запити без встановлення.
JavaScript для швидких експериментів.Перевіряйте код для браузера й порівнюйте ідеї поруч із навчальними матеріалами.
SQLite для практики з даними.Відкривайте оглядач бази даних, переглядайте таблиці, пишіть запити й вивчайте SQL локально.
ТемаIDE
Працюйте поруч у split tabs
Тримайте інструкції перед очима.Відкрийте вправу або довідкову сторінку поруч з IDE, замість постійних перемикань.
Порівнюйте інструменти під час навчання.Розміщуйте перевірки regex, пояснення та експерименти з кодом поруч, коли це потрібно для задачі.
Закрийте split, коли завершите.Workspace повернеться до однієї сфокусованої вкладки, а відкриті вкладки сайту залишаться доступними.
Тренажер друку коду
Або звичайного тексту
Тренажер розрахований на фізичну клавіатуру.Відкрийте цей розділ на ноутбуці або комп'ютері з широким екраном. На телефоні тренування друку не працюватиме коректно.
Швидкість: 0 зн/хв
0 слів/хв
Найкраща швидкість (60с): 0 зн/хв
0 слів/хв
Помилки: 0
Загальний час: 0.0 с
Щоб тренувати сліпий друк, не підглядайте на фізичну клавіатуру.