Ответ
Да, данные в GET-запросе передаются через строку запроса (query string) в URL.
Синтаксис:
http(s)://<хост>[:порт]/<путь>?<параметр1>=<значение1>&<параметр2>=<значение2>
Пример URL с данными:
https://api.shop.com/products?category=electronics&sort=price&page=2
Пример создания GET-запроса с параметрами в Java 11+:
import java.net.URI;
import java.net.http.*;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class GetExample {
public static void main(String[] args) throws Exception {
String baseUrl = "https://api.shop.com/products";
// Формируем строку параметров с кодированием
String queryString = "category=" + URLEncoder.encode("home & garden", StandardCharsets.UTF_8) +
"&page=1";
URI fullUri = URI.create(baseUrl + "?" + queryString);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(fullUri)
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
Характеристики и ограничения GET:
- Видимость: Все параметры отображаются в URL, истории браузера и логах сервера.
- Длина: Ограничена длиной URL, поддерживаемой клиентом и сервером.
- Кэширование: Ответы на GET-запросы могут кэшироваться.
- Идемпотентность: GET является идемпотентным и безопасным методом (не должен изменять состояние сервера).
Когда использовать GET: Для запросов данных, поиска, фильтрации — операций, где параметры задают критерии выборки, а не изменяют ресурсы.