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).
java -jar restjdbc.jar restcountries.sql
Die Datei restcountries.sql enthält Verbindung und Beispiel-Abfragen. Vorgehen:
restjdbc.jar)token=XXXX durch Ihren Schlüssel ersetzenrestcountries.sql und restcountries-spec.json liegenconnect 'jdbc:rest:https://api.restcountries.com|spec=restcountries-spec.json,auth=bearer,token=Ihr_Schlüssel'
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);
| 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
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" }
]
}
]
}
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.
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.
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.
Nicht unterstützt ("write": false).
SELECT table_name FROM system.table_list;
SELECT column_name, type_name FROM system.column_list WHERE table_name = 'countries';
rc_live_demo liefert nur Beispieldaten zum Testen der Antwortstruktur.jsonPath ergänzen (z. B. /capitals/0 für Hauptstadt).