Saltar al contenido principal

Java

Empieza por la guía REST para obtener un token API de la plataforma. Este ejemplo utiliza HttpClient de Java y Jackson para analizar JSON.

Crea un proyecto Gradle. Añade este build.gradle:

plugins {
id 'java'
id 'application'
}

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

Guarda como src/main/java/dev/reconstruct/example/Main.java:

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());
}
}
}

Ejecuta gradle run (o ./gradlew run con un wrapper). Envía nextPageToken como parámetro de consulta pageToken codificado para URL para obtener otra página.