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

Один ресурс API в Java

Многие API адресуют объект по идентификатору в конце пути. Ответ - один JSON-объект, его разбирают так же, как локальную строку, только источником служит body() у ответа клиента.

Чтение "/users/1" на typicode возвращает пользователя с полем name. Модель снова может быть короткой, лишние ключи отбрасывают аннотацией на record:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 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; @JsonIgnoreProperties(ignoreUnknown = true) public record ApiUser(int id, String name) {} 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/users/1", ), ) .GET() .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString(), ); ApiUser user = mapper.readValue( response.body(), ApiUser.class, ); System.out.println(user.name()); } }

Тот же путь с другим числом в конце дает другую запись. Достаточно поменять сегмент адреса и снова прочитать name из разобранного объекта:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 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; @JsonIgnoreProperties(ignoreUnknown = true) public record ApiUser(int id, String name) {} 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/users/2", ), ) .GET() .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString(), ); ApiUser user = mapper.readValue( response.body(), ApiUser.class, ); System.out.println(user.id()); System.out.println(user.name()); } }
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить