REST-Jdbc — REST Countries

REST Countries liefert Länderdaten (Namen, Codes, Region, Bevölkerung u. v. m.). Die aktuelle API-Version v5 ist nur lesend und erfordert einen kostenlosen API-Schlüssel (Registrierung auf der Website).

Schnellstart mit dem JDBC-Client

java -jar restjdbc.jar restcountries.sql

Die Datei restcountries.sql enthält Verbindung und Beispiel-Abfragen. Vorgehen:

  1. Treiber-JAR bereitstellen (absoluter Pfad zur restjdbc.jar)
  2. Kostenlosen API-Schlüssel auf restcountries.com/sign-up anlegen
  3. In restcountries.sql token=XXXX durch Ihren Schlüssel ersetzen
  4. Befehl im Ordner starten, in dem restcountries.sql und restcountries-spec.json liegen
connect 'jdbc:rest:https://api.restcountries.com|spec=restcountries-spec.json,auth=bearer,token=Ihr_Schlüssel'

1. JDBC-URL

jdbc:rest:https://api.restcountries.com

Die Basis-URL der API steht in der JDBC-URL.

Bestandteil Wert
Treiber-Präfix jdbc:rest:
API-Basis-URL https://api.restcountries.com
Schema (SQL) public (Standard)

Beispiel-Verbindung (Java):

Properties props = new Properties();
props.setProperty("spec", "/pfad/zu/restcountries-spec.json");
props.setProperty("auth", "bearer");
props.setProperty("token", System.getenv("RESTCOUNTRIES_API_KEY"));

Connection conn = DriverManager.getConnection(
    "jdbc:rest:https://api.restcountries.com", props);

2. Connection Properties

Property Wert Erforderlich
spec Pfad zur Spec Ja
auth bearer Ja
token API-Schlüssel von REST Countries Ja

Spec-Pfad: absoluter Pfad zu Ihrer lokalen Kopie der Spec-Datei.

Spec-Datei: restcountries-spec.json

3. Spec-Datei

Datei: restcountries-spec.json

Auszug:

{
  "entities": [
    {
      "name": "countries",
      "path": "/countries/v5",
      "dataPath": "/data/objects",
      "pagination": {
        "type": "offset",
        "limitParam": "limit",
        "offsetParam": "offset",
        "defaultLimit": 25
      },
      "write": false,
      "columns": [
        { "name": "alpha_2", "type": "VARCHAR", "primaryKey": true, "jsonPath": "/codes/alpha_2" },
        { "name": "name", "type": "VARCHAR", "jsonPath": "/names/common" },
        { "name": "region", "type": "VARCHAR" },
        { "name": "population", "type": "BIGINT" }
      ]
    }
  ]
}

Tabelle countries

SQL-Tabelle REST-Pfad Paginierung
countries /countries/v5 offset mit limit / offset (max. 25 pro Seite im Free-Tier)

Die Antwort liegt unter data.objects (dataPath). Verschachtelte Felder wie Ländername oder ISO-Code werden über jsonPath gelesen.

"write": false — nur SELECT.

4. Authentifizierung

REST Countries v5 verlangt einen API-Schlüssel als Bearer-Token:

props.setProperty("auth", "bearer");
props.setProperty("token", "rc_live_…");

Der Treiber sendet: Authorization: Bearer rc_live_…

Ältere API-Versionen (v1–v3) ohne Schlüssel sind abgeschaltet — nur v5 ist verfügbar.

5. SQL-Beispiele

SELECT

SELECT alpha_2, name, region, population FROM countries;

SELECT alpha_2, name, region FROM countries FILTER region=Europe;

SELECT alpha_2, name FROM countries FILTER q=Germany;
SQL HTTP
SELECT … FROM countries GET …/countries/v5?limit=25&offset=0, dann offset=25, …
SELECT … FILTER region=Europe GET …/countries/v5?region=Europe&limit=25&offset=0, …
SELECT … FILTER q=Germany GET …/countries/v5?q=Germany&limit=25&offset=0, …

FILTER leitet Query-Parameter an die API weiter. Bei offset-Paginierung lädt der Treiber alle Seiten automatisch.

INSERT, UPDATE, DELETE

Nicht unterstützt ("write": false).

6. System-Tabellen

SELECT table_name FROM system.table_list;

SELECT column_name, type_name FROM system.column_list WHERE table_name = 'countries';

7. Hinweise

  • Free-Tier: Begrenzte Anzahl Requests pro Monat — siehe REST Countries Preise.
  • Demo-Schlüssel: rc_live_demo liefert nur Beispieldaten zum Testen der Antwortstruktur.
  • Weitere Felder: Über 80 Felder pro Land — in der Spec mit jsonPath ergänzen (z. B. /capitals/0 für Hauptstadt).