Exemplo Hello World
Exemplo Hello World
Este exemplo cria um endpoint simples de API associado a um usuário do banco de dados. Duas abordagens de autenticação são mostradas: o fluxo clássico com JWT e o fluxo mais simples de credenciais diretas.
1. Criar Usuário e Função
No seu banco de dados (meu_banco):
-- 1. Crie um usuário que fará login na API
CREATE ROLE demo_user WITH LOGIN PASSWORD 'user_password';
GRANT USAGE ON SCHEMA api TO demo_user;
-- 2. Crie a função Hello World
-- Entrada: jsonb vazio, Saída: json
CREATE OR REPLACE FUNCTION api.hello_world(payload jsonb)
RETURNS json
LANGUAGE sql
AS $$
SELECT '"Hello World"'::json;
$$;
-- 3. Conceda permissão ao usuário
GRANT EXECUTE ON FUNCTION api.hello_world(jsonb) TO demo_user;Escolha a Opção A (JWT) para sessões baseadas em navegador ou de usuário final. Escolha a Opção B (credenciais diretas) para desenvolvimento local, scripts ou serviços internos — nenhum gerenciamento de token é necessário.
Opção A: Fluxo de Token JWT
A autenticação JWT exige que o usuário de sistema do PgArachne (pgarachne) possa alternar
para demo_user:
-- Necessário apenas para autenticação JWT: permite que o PgArachne alterne para demo_user
GRANT demo_user TO pgarachne;Passo 1 — Obter um JWT
Chame o método JSON-RPC get_jwt com as credenciais do usuário:
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}'Resposta:
{"jsonrpc":"2.0","result":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."},"id":1}Passo 2 — Chamar a Função
Use o JWT no cabeçalho Authorization:
export TOKEN="SEU_TOKEN_JWT_AQUI"
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}'Resposta:
{"jsonrpc":"2.0","result":"Hello World","id":1}Opção B: Credenciais Diretas (Sem JWT)
Envie o usuário e a senha do PostgreSQL diretamente em cada requisição usando HTTP Basic
Authentication. O PgArachne abre um pool de conexões como esse usuário — nenhum
GRANT … TO pgarachne é necessário.
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}'Resposta:
{"jsonrpc":"2.0","result":"Hello World","id":1}A flag -u usuario:senha do curl define automaticamente o cabeçalho
Authorization: Basic …. Ambas as opções produzem respostas idênticas.
Consulte Segurança e Autenticação — Credenciais Diretas para uma comparação completa de todos os métodos de autenticação.