Esempio Hello World
Esempio Hello World
Questo esempio crea un semplice endpoint API associato a un utente del database. Sono mostrati due approcci di autenticazione: il classico flusso JWT e il più semplice flusso a credenziali dirette.
1. Creazione Utente e Funzione
Nel tuo database (my_database):
-- 1. Crea un utente che effettuerà il login sull'API
CREATE ROLE demo_user WITH LOGIN PASSWORD 'user_password';
GRANT USAGE ON SCHEMA api TO demo_user;
-- 2. Crea la funzione Hello World
-- Input: jsonb vuoto, Output: json
CREATE OR REPLACE FUNCTION api.hello_world(payload jsonb)
RETURNS json
LANGUAGE sql
AS $$
SELECT '"Hello World"'::json;
$$;
-- 3. Concedi i permessi all'utente
GRANT EXECUTE ON FUNCTION api.hello_world(jsonb) TO demo_user;Scegli l’Opzione A (JWT) per sessioni basate su browser o utente finale. Scegli l’Opzione B (credenziali dirette) per lo sviluppo locale, gli script, o i servizi interni — non è richiesta alcuna gestione dei token.
Opzione A: Flusso con Token JWT
L’autenticazione JWT richiede che l’utente di sistema di PgArachne (pgarachne) possa passare
a demo_user:
-- Richiesto solo per l'autenticazione JWT: permetti a PgArachne di passare a demo_user
GRANT demo_user TO pgarachne;Passo 1 — Ottenimento di un JWT
Chiama il metodo JSON-RPC get_jwt con le credenziali dell’utente:
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}'Risposta:
{"jsonrpc":"2.0","result":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."},"id":1}Passo 2 — Chiamata della Funzione
Usa il JWT nell’header Authorization:
export TOKEN="IL_TUO_TOKEN_JWT_QUI"
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}'Risposta:
{"jsonrpc": "2.0", "result": "Hello World", "id": 1}Opzione B: Credenziali dirette (nessun JWT richiesto)
Invia direttamente il nome utente e la password PostgreSQL con ogni richiesta usando l’autenticazione HTTP
Basic. PgArachne apre un pool di connessioni come quell’utente — non è necessario alcun
GRANT … TO pgarachne.
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}'Risposta:
{"jsonrpc":"2.0","result":"Hello World","id":1}Il flag -u utente:password di curl imposta automaticamente l’header
Authorization: Basic …. Entrambe le opzioni producono risposte identiche.
Consulta Sicurezza e Autenticazione — Credenziali dirette per un confronto completo di tutti i metodi di autenticazione.