Ana içeriğe geç

Java

Platform API belirteci almak için REST kılavuzuyla başlayın. Bu örnek Java'nın HttpClient sınıfını ve JSON ayrıştırma için Jackson'ı kullanır.

Bir Gradle projesi oluşturun. Bu build.gradle dosyasını ekleyin:

plugins {
id 'java'
id 'application'
}

repositories { mavenCentral() }
dependencies {
implementation 'com.fasterxml.jackson.core:jackson-databind:2.19.0'
}
application { mainClass = 'dev.reconstruct.example.Main' }

src/main/java/dev/reconstruct/example/Main.java olarak kaydedin:

package dev.reconstruct.example;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;

public final class Main {
private static final String BASE = "https://reconstruct.dev/api/v1/platform";

private static JsonNode get(HttpClient client, ObjectMapper mapper,
String token, String path) throws Exception {
var request = HttpRequest.newBuilder(URI.create(BASE + path))
.header("Authorization", "Bearer " + token)
.timeout(Duration.ofSeconds(10))
.GET().build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() != 200) {
throw new IllegalStateException("API returned HTTP " + response.statusCode());
}
return mapper.readTree(response.body());
}

public static void main(String[] args) throws Exception {
String token = System.getenv("CR_RECONSTRUCT_API_TOKEN");
if (token == null || token.isBlank()) {
throw new IllegalStateException("Set CR_RECONSTRUCT_API_TOKEN");
}
var client = HttpClient.newHttpClient();
var mapper = new ObjectMapper();
var page = get(client, mapper, token, "/catalogs?pageSize=10");
for (var catalog : page.path("catalogs")) {
String id = catalog.path("catalogId").asText();
String encoded = URLEncoder.encode(id, StandardCharsets.UTF_8)
.replace("+", "%20");
var detail = get(client, mapper, token, "/catalogs/" + encoded);
System.out.println(detail.path("catalogId").asText() + ": "
+ detail.path("description").asText());
}
if (page.hasNonNull("nextPageToken")) {
System.out.println("Next page token: " + page.get("nextPageToken").asText());
}
}
}

gradle run çalıştırın (wrapper varsa ./gradlew run). Başka sayfa almak için nextPageToken değerini URL kodlamalı pageToken sorgu parametresi olarak gönderin.