SDKs

Java

Thunderbit Open API のための Java イディオムなパターン

java.net.http.HttpClient(Java 11+ に組み込み)を使います。接続プーリングやリトライなど、よりリッチな使い勝手が欲しければ OkHttp + Jackson を組み合わせましょう。

Configure

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

private static final String API = "https://openapi.thunderbit.com/openapi/v1";
private static final HttpClient CLIENT = HttpClient.newBuilder()
    .connectTimeout(Duration.ofSeconds(10))
    .build();

private static HttpRequest.Builder request(String path) {
    return HttpRequest.newBuilder()
        .uri(URI.create(API + path))
        .header("Authorization", "Bearer " + System.getenv("THUNDERBIT_API_KEY"))
        .header("Content-Type", "application/json")
        .timeout(Duration.ofSeconds(60));
}

ページを Distill する

String body = "{\"url\":\"https://thunderbit.com/playground\"}";
HttpResponse<String> res = CLIENT.send(
    request("/distill").POST(HttpRequest.BodyPublishers.ofString(body)).build(),
    HttpResponse.BodyHandlers.ofString()
);
if (res.statusCode() >= 400) throw new RuntimeException(res.body());

構造化データを Extract する

String body = """
{
  "url": "https://example.com/product/iphone-15-pro",
  "schema": {
    "type": "object",
    "properties": {
      "name":  { "type": "string" },
      "price": { "type": "number" }
    },
    "required": ["name", "price"]
  }
}
""";
HttpResponse<String> res = CLIENT.send(
    request("/extract").POST(HttpRequest.BodyPublishers.ofString(body)).build(),
    HttpResponse.BodyHandlers.ofString()
);

レスポンスは Jackson か Gson でドメイン型へパースしてください。

Batch + Webhook

String body = """
{
  "urls": ["https://example.com/page1", "https://example.com/page2"],
  "webhook": {
    "url":    "https://your-server.com/webhook",
    "secret": "%s"
  }
}
""".formatted(System.getenv("WEBHOOK_SECRET"));

HttpResponse<String> res = CLIENT.send(
    request("/batch/distill").POST(HttpRequest.BodyPublishers.ofString(body)).build(),
    HttpResponse.BodyHandlers.ofString()
);

ハンドラ側で Webhook 署名を検証してください —— Webhooks を参照。

公式 Java SDK は開発中です —— もう少しお待ちください。