Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpApQpr 246 of 322 menu
◀ ▶

Параметры строки запроса в Java

После пути в URI часто идет строка запроса: пары "имя=значение", разделенные амперсандом. Сервер по ним сужает выборку, а клиент просто добавляет готовый фрагмент к адресу.

На typicode адрес "/posts?userId=1" возвращает только посты первого пользователя. Ответ по-прежнему JSON-массив в корне:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.List; @JsonIgnoreProperties(ignoreUnknown = true) public record ApiPost(int userId, String title) {} public class Main { public static void main(String[] args) throws Exception { ObjectMapper mapper = new ObjectMapper(); HttpClient client = HttpClient.newBuilder().build(); HttpRequest request = HttpRequest.newBuilder() .uri( URI.create( "https://jsonplaceholder.typicode.com/posts?userId=1", ), ) .GET() .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString(), ); List<ApiPost> posts = mapper.readValue( response.body(), new TypeReference<List<ApiPost>>() {}, ); System.out.println(posts.size()); } }

Несколько параметров перечисляют через "&". Учебный httpbin.org/get возвращает их в JSON-поле args, что удобно для проверки сборки адреса:

import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class Main { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newBuilder().build(); String address = "https://httpbin.org/get?tag=java&page=2"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(address)) .GET() .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString(), ); System.out.println(response.body()); } }

Выполните GET на "https://jsonplaceholder.typicode.com/posts?userId=1". Разберите массив в список моделей с полями userId и title и выведите размер списка.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить