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

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

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

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

import java.net.URI import java.net.http.HttpClient import java.net.http.HttpRequest import java.net.http.HttpResponse import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @Serializable data class ApiUser(val id: Int, val name: String) fun main() { val json = Json { ignoreUnknownKeys = true } val client = HttpClient.newBuilder().build() val request = HttpRequest.newBuilder() .uri( URI.create( "https://jsonplaceholder.typicode.com/users/1", ), ) .GET() .build() val response = client.send( request, HttpResponse.BodyHandlers.ofString(), ) val user = json.decodeFromString<ApiUser>( response.body(), ) println(user.name) }

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

import java.net.URI import java.net.http.HttpClient import java.net.http.HttpRequest import java.net.http.HttpResponse import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @Serializable data class ApiUser(val id: Int, val name: String) fun main() { val json = Json { ignoreUnknownKeys = true } val client = HttpClient.newBuilder().build() val request = HttpRequest.newBuilder() .uri( URI.create( "https://jsonplaceholder.typicode.com/users/2", ), ) .GET() .build() val response = client.send( request, HttpResponse.BodyHandlers.ofString(), ) val user = json.decodeFromString<ApiUser>( response.body(), ) println(user.id) println(user.name) }
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить