Параметры запроса — это пары ключ-значение, которые добавляются к 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 с
Для активации режима слепого набора не подсматривайте на физическую клавиатуру.