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

Идентификатор в пути в Kotlin

Шаблон "/posts/{id}" означает, что число в конце адреса выбирает запись. Строку URI собирают заранее, подставляя нужный идентификатор в литерал или через интерполяцию.

Пусть требуется пост с номером 3. После чтения тела достаточно модели с id и title:

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 ApiPost(val id: Int, val title: String) fun main() { val postId = 3 val json = Json { ignoreUnknownKeys = true } val client = HttpClient.newBuilder().build() val address = "https://jsonplaceholder.typicode.com/posts/$postId" val request = HttpRequest.newBuilder() .uri(URI.create(address)) .GET() .build() val response = client.send( request, HttpResponse.BodyHandlers.ofString(), ) val post = json.decodeFromString<ApiPost>( response.body(), ) println(post.id) println(post.title) }

Тот же прием работает для пользователей: меняется только базовый сегмент и тип модели. Число 2 в пути дает вторую учебную запись:

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 userId = 2 val json = Json { ignoreUnknownKeys = true } val client = HttpClient.newBuilder().build() val address = "https://jsonplaceholder.typicode.com/users/$userId" val request = HttpRequest.newBuilder() .uri(URI.create(address)) .GET() .build() val response = client.send( request, HttpResponse.BodyHandlers.ofString(), ) val user = json.decodeFromString<ApiUser>( response.body(), ) println(user.name) }
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить