JSON-RPC & Hello World
JSON-RPC & Hello World
Dieses Beispiel erstellt einen einfachen API-Endpunkt, der einem Datenbankbenutzer zugeordnet ist. Zwei Authentifizierungsansätze werden gezeigt: der klassische JWT-Ablauf und der einfachere Ablauf mit direkten Zugangsdaten.
1. Benutzer und Funktion erstellen
In Ihrer Datenbank (my_database):
-- 1. Benutzer erstellen, der sich bei der API anmelden kann
CREATE ROLE demo_user WITH LOGIN PASSWORD 'user_password';
GRANT USAGE ON SCHEMA api TO demo_user;
-- 2. Hello-World-Funktion erstellen
-- Eingabe: leeres jsonb, Ausgabe: json
CREATE OR REPLACE FUNCTION api.hello_world(payload jsonb)
RETURNS json
LANGUAGE sql
AS $$
SELECT '"Hello World"'::json;
$$;
-- 3. Berechtigung für den Benutzer vergeben
GRANT EXECUTE ON FUNCTION api.hello_world(jsonb) TO demo_user;Wählen Sie Option A (JWT) für browserbasierte Sitzungen oder Endnutzer-Sitzungen. Wählen Sie Option B (direkte Zugangsdaten) für lokale Entwicklung, Skripte oder interne Dienste — kein Token-Management erforderlich.
Option A: JWT-Token-Ablauf
Die JWT-Authentifizierung erfordert, dass der PgArachne-Systembenutzer (pgarachne) zu
demo_user wechseln kann:
-- Required for JWT auth only: allow PgArachne to switch to demo_user
GRANT demo_user TO pgarachne;Schritt 1 — JWT abrufen
Rufen Sie die JSON-RPC-Methode get_jwt mit den Zugangsdaten des Benutzers auf:
curl -X POST http://localhost:8080/db/my_database/jsonrpc \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"get_jwt","params":{"login":"demo_user","password":"user_password"},"id":1}'Antwort:
{"jsonrpc":"2.0","result":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."},"id":1}Schritt 2 — Funktion aufrufen
Verwenden Sie das JWT im Authorization-Header:
export TOKEN="YOUR_JWT_TOKEN_HERE"
curl -X POST http://localhost:8080/db/my_database/jsonrpc \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"api.hello_world","params":{},"id":1}'Antwort:
{"jsonrpc":"2.0","result":"Hello World","id":1}Option B: Direkte Zugangsdaten (kein JWT erforderlich)
Senden Sie den PostgreSQL-Benutzernamen und das Passwort direkt mit jedem Request über HTTP-Basic-Authentifizierung.
PgArachne öffnet einen Connection-Pool als dieser Benutzer — kein GRANT … TO pgarachne
erforderlich.
curl -X POST http://localhost:8080/db/my_database/jsonrpc \
-u demo_user:user_password \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"api.hello_world","params":{},"id":1}'Antwort:
{"jsonrpc":"2.0","result":"Hello World","id":1}Das Flag -u user:password von curl setzt automatisch den
Authorization: Basic …-Header. Beide Optionen liefern identische Antworten.
Siehe Sicherheit & Authentifizierung — Direkte Zugangsdaten für einen vollständigen Vergleich aller Authentifizierungsmethoden.