Ответ
Query-параметры (или URL-параметры) — это пары ключ=значение, добавляемые в конец URL после знака ? для передачи дополнительных данных серверу. Несколько параметров разделяются символом &. Они используются для фильтрации, сортировки, пагинации и настройки запросов к API.
Структура URL:
https://api.example.com/resource?param1=value1¶m2=value2
Пример с пагинацией и фильтром:
https://api.example.com/users?role=admin&limit=10&page=2&sort=name
Параметры: role=admin, limit=10, page=2, sort=name.
Использование в коде (Python, requests):
import requests
params = {
'q': 'search term',
'page': 1,
'sort': 'date',
'is_active': 'true'
}
response = requests.get('https://api.example.com/search', params=params)
# Фактический URL: https://api.example.com/search?q=search+term&page=1&sort=date&is_active=true
Важные аспекты для тестирования API:
- Валидация: Сервер должен корректно обрабатывать отсутствующие, необязательные и обязательные параметры.
- Кодирование: Специальные символы (пробелы,
&,=) должны быть правильно закодированы (например, пробел становится%20или+). - Типы данных: Проверка обработки строковых, числовых и булевых значений.
- Безопасность: Защита от инъекций через параметры (например, SQL-инъекция, если параметры используются в запросах к БД).
Ответ 18+ 🔞
Да ты посмотри, что эти ваши разработчики вытворяют! Взяли и прилепили к обычному URL какую-то хуйню после знака вопроса. Это, блядь, и есть query-параметры — парочки ключ=значение. Хочешь передать серверу какую-то доп.инфу, типа «дай мне только админов, да побольше, да отсортированных»? Вешай их на URL, как гирлянды на ёлку!
Как это выглядит, ёпта:
https://api.example.com/resource?param1=value1¶m2=value2
Видишь этот вопросительный знак? Всё, что после него — уже не просто адрес, а целая инструкция с пожеланиями. Несколько таких пожеланий разделяются амперсандом &. Просто, аж овердохуища!
Вот тебе пример из жизни, чтобы не быть голословным:
https://api.example.com/users?role=admin&limit=10&page=2&sort=name
Расшифровываю, как на духу: «Эй, сервер, дай-ка мне пользователей! Но только админов (role=admin), партийку в 10 штук (limit=10), вторую страницу такой партии (page=2), и чтоб по имени отсортировано было (sort=name)». Всё, пиздец, вопросов нет.
А вот как этим пользоваться в коде (Python, requests), если ты вдруг решил автоматизировать свою бурную деятельность:
import requests
params = {
'q': 'search term',
'page': 1,
'sort': 'date',
'is_active': 'true'
}
response = requests.get('https://api.example.com/search', params=params)
# А библиотека сама, хитрая жопа, склеит тебе итоговый URL: https://api.example.com/search?q=search+term&page=1&sort=date&is_active=true
Удобно, блядь! Не надо руками строки клепать.
Но тут, сука, есть подводные ебучие камни, о которые тестировщики лбы разбивают:
- Валидация: А что будет, если я параметр не передам? Или передам пустой? Или передам ебаное
page=ёптавместо цифры? Сервер должен не сдохнуть, а красиво сказать «чувак, иди нахуй с такими данными» (в смысле, вернуть адекватную ошибку). - Кодирование: А если в значении параметра нужен пробел, или, не дай бог, сам знак
&? Его надо закодировать, превратить в%20или+. Иначе всё поломается, и получится пиздопроебибна вместо запроса. - Типы данных: Сервер должен понимать, что
limit=10— это число, аis_active=true— это булево значение, а не просто строки «10» и «true». А то потом удивление пиздец: почему сортировка не работает? - Безопасность: Вот это самый сок! Если сервер тупо берёт параметры и суёт их прямиком в SQL-запрос — это пиздец, кот сука собака. Любой школьник сделает SQL-инъекцию и вытащит все твои пароли. Надо экранировать, валидировать, и вообще, бздеть тут надо постоянно.
Вот так вот, коротко и без лишней воды. Параметры в URL — мощный инструмент, но, как и всё мощное, требует, чтобы мозги были включены. Иначе будет не API, а манда с ушами.