Комментарии (1)
🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Местонахождение и способы передачи Query-параметров
Query-параметры (параметры запроса, query string) — это часть URL (Uniform Resource Locator), следующая за символом вопросительного знака ? и предназначенная для передачи дополнительных данных на сервер в рамках HTTP-запроса, чаще всего GET-метода. Они представляют собой пары "ключ=значение", разделенные амперсандом &.
Основные места, где прописываются query-параметры:
- Непосредственно в URL (адресной строке браузера, ссылке)
Это самый наглядный способ. Параметры добавляются в конец адреса ресурса.
```
https://example.com/search?q=automation&sort=price&page=2
```
Здесь:
* `q` — ключ параметра со значением `automation`.
* `sort` — ключ со значением `price`.
* `page` — ключ со значением `2`.
- В коде приложения (на стороне клиента)
При формировании запроса из JavaScript, Python, Java и других языков параметры добавляются программно.
* **JavaScript (fetch API)**:
```javascript
const params = new URLSearchParams({ category: 'books', limit: 20 });
fetch(`https://api.example.com/items?${params}`)
.then(response => response.json());
```
* **Python (библиотека requests)**:
```python
import requests
params = {'user_id': 12345, 'action': 'view'}
response = requests.get('https://api.example.com/profile', params=params)
```
* **Java (библиотека HttpClient)**:
```java
URI uri = new URIBuilder("https://api.example.com/data")
.addParameter("from_date", "2024-01-01")
.addParameter("format", "json")
.build();
HttpRequest request = HttpRequest.newBuilder().uri(uri).GET().build();
```
3. В инструментах для тестирования API (Postman, Insomnia, Swagger)
В интерфейсе этих инструментов есть специальные разделы (вкладки) для удобного ввода query-параметров.
* В **Postman**: вкладка "Params" под адресной строкой. Ключи и значения вводятся в таблицу, и URL автоматически формируется с ними.
* В **Swagger UI**: рядом с описанием эндпоинта обычно есть поля для ввода параметров, помеченных как `query`.
- В HTML-формах с методом GET
Когда форма (`<form>`) в HTML отправляется с атрибутом `method="GET"`, данные из ее полей (input, select) автоматически преобразуются в query-параметры и добавляются к URL указанному в атрибуте `action`.
```html
<form action="/search" method="GET">
<input type="text" name="query" value="test">
<select name="language">
<option value="ru">Russian</option>
</select>
<button type="submit">Искать</button>
</form>
```
При отправке этой формы браузер выполнит запрос на URL: `/search?query=test&language=ru`.
Важные технические аспекты для QA-инженера:
- Кодирование (URL Encoding): Специальные символы (пробелы, кириллица, символы
&,=и др.) должны быть закодированы. Пробел становится%20или+, кириллица — последовательностью%D0%9F. Современные библиотеки и браузеры делают это автоматически. - Ограничения длины: Теоретического предела в спецификации нет, но практическое ограничение накладывается браузерами (несколько тысяч символов) и серверными конфигурациями. Для передачи больших объемов данных используйте тело запроса (request body), например, в POST или PUT запросах.
- Видимость и кеширование: Поскольку параметры являются частью URL, они сохраняются в истории браузера, логах сервера и могут кешироваться. Это не подходит для передачи конфиденциальных данных (паролей, токенов).
- Типы данных: Все значения параметров — это строки. Преобразование в числа, булевы значения и другие типы — задача серверной логики.
- Валидация: Одни из ключевых объектов тестирования. Необходимо проверять:
* Поведение при обязательных и опциональных параметрах.
* Обработку некорректных значений (спецсимволы, SQL-инъекции, XSS-векторы).
* Поведение при дублировании ключей (часто сервер берет первое или последнее значение).
* Чувствительность к регистру в именах ключей.
Понимание того, где и как прописываются query-параметры, критически важно для QA-инженера при тестировании веб-приложений и API, составлении тест-кейсов, воспроизведении багов и работе с сетевыми запросами в DevTools или снифферах.