Autom

Java

Installieren Sie das Java-SDK von Autom und starten Sie Ihren ersten API-Aufruf.

Das offizielle Java-SDK von Autom mit einer typisierten Methode pro Endpunkt und einem generischen request() für alles andere.

Voraussetzungen

  • Java 17+

Installation

Das Java-SDK ist nicht auf Maven Central verfügbar. Bauen Sie es aus dem Quellcode, um es in Ihrem lokalen Maven-Repository zu installieren, und fügen Sie es dann Ihrem Projekt hinzu.

git clone https://github.com/automdev/autom-java.git
cd autom-java
mvn -q install -DskipTests
Maven
<dependency>
  <groupId>dev.autom</groupId>
  <artifactId>autom</artifactId>
  <version>0.1.0</version>
</dependency>
Gradle
implementation("dev.autom:autom:0.1.0")

API-Schlüssel erhalten

Kopieren Sie Ihren API-Schlüssel aus dem Autom-Dashboard und legen Sie ihn in der Umgebungsvariable AUTOM_API_KEY ab, die das SDK standardmäßig liest. Checken Sie ihn nicht in die Versionsverwaltung ein.

Schnellstart

import dev.autom.ApiResponse;
import dev.autom.AutomClient;
import dev.autom.params.GoogleSearchParams;

AutomClient client = AutomClient.fromEnv();
ApiResponse response = client.googleSearch(GoogleSearchParams.builder().query("web scraping api").build());
System.out.println(response.json().toPrettyString());

Asynchrone Jobs

Jeder Aufruf akzeptiert is_async, nützlich jenseits des Serverlimits von 60 Sekunden. Die Antwort ist dann eine job_id, und das SDK kann auf das Ende des Jobs warten.

ApiResponse submitted = client.googleSearch(GoogleSearchParams.builder().query("web scraping api").isAsync(true).build());
ApiResponse job = client.waitForJob(
    submitted.json().get("job_id").asText(),
    Duration.ofSeconds(3),
    Duration.ofHours(12),
    progress -> System.out.println(progress.path("status").asText() + " " + progress.path("progress").asInt()));

Fehler

Eine Antwort außerhalb von 2xx löst einen API-Fehler mit Status und Meldung aus. Die vollständige Liste finden Sie unter Statuscodes.

try {
  client.googleSearch(GoogleSearchParams.builder().query("web scraping api").build());
} catch (AutomApiException e) {
  System.err.println(e.status() + ": " + e.getMessage());
}

Wiederholungen

Anfragen werden bis zu 3-mal wiederholt nach einem Netzwerkfehler, einem 408, 500, 502, 503 oder 504 oder einem Ratenlimit des Tarifs. Kontingentfehler pro Schlüssel und clientseitige Timeouts werden nicht wiederholt. Die Wartezeit beginnt bei 1 Sekunde und wächst pro Wiederholung um das 1,5-Fache; ein Retry-After-Header hat Vorrang.

AutomClient client = AutomClient.builder().maxRetries(5).retryDelay(Duration.ofMillis(500)).build();
client.googleSearch(GoogleSearchParams.builder().query("web scraping api").build(), RequestOptions.builder().maxRetries(0).build()); // one request without retries

Batch-Anfragen

Führen Sie viele Aufrufe gleichzeitig aus, standardmäßig 10. Ein Fehler stoppt die anderen nicht.

List<String> inputs = List.of("web scraping api", "serp api", "rank tracker");
List<BatchResult<ApiResponse>> results = client.batch(inputs, 5, value ->
    client.googleSearch(GoogleSearchParams.builder().query(value).build()));
for (BatchResult<ApiResponse> result : results) {
  if (result.ok()) {
    System.out.println(result.value().json());
  } else {
    System.err.println(inputs.get(result.index()) + ": " + result.error().getMessage());
  }
}

Beliebiger Endpunkt

request() erreicht jeden Pfad, auch Endpunkte, die nach Ihrer SDK-Version erschienen sind.

ApiResponse response = client.request("GET", "/v1/usage", Map.of());

Häufige Fehler

  • Den API-Schlüssel in Frontend-Code einbauen. Jeder könnte ihn lesen. Rufen Sie die API von Ihrem Server auf.
  • Jeden 401 als falschen Schlüssel behandeln. Ein 401 kann auch ein Ratenlimit sein: Lesen Sie die Meldung. Das SDK wiederholt Tarif-Ratenlimits automatisch.
  • Einen 402 wiederholen. Es sind keine Credits oder Kontingente mehr übrig, eine Wiederholung kann also nicht gelingen. Siehe Credits.
  • Auf lange Anfragen warten. Nutzen Sie ab 60 Sekunden den asynchronen Modus wie oben gezeigt, statt das Timeout zu erhöhen. Siehe Timeout.

Auf dieser Seite