10.9 - Usando Funções como API no Supabase
Agora que você já sabe criar suas funções no banco, vamos ver como usá-las diretamente pela API RESTful que o Supabase gera para o seu banco de dados.
Como funciona?
O Supabase cria automaticamente uma API chamada PostgREST que expõe suas tabelas e também suas funções armazenadas (database functions) — desde que estejam configuradas para isso.
Passos para chamar uma função via API:
Criar a função com parâmetros (se precisar)
Permitir a execução da função para a role
anon
ouauthenticated
(você faz isso na interface de permissões do Supabase ou via SQL comGRANT EXECUTE
)Chamar a função pela rota
/rpc/nome_da_funcao
usando uma requisição POST com JSON contendo os parâmetros
Exemplo prático:
Suponha a função PL/pgSQL que calcula idade:
CREATE OR REPLACE FUNCTION calcular_idade(data_nasc DATE)
RETURNS integer
LANGUAGE plpgsql
AS $$
BEGIN
RETURN date_part('year', age(now(), data_nasc));
END;
$$;
Para chamar via API REST:
Endpoint:
POST https://<seu-projeto>.supabase.co/rest/v1/rpc/calcular_idade
Body JSON:
jsonCopiarEditar{
"data_nasc": "1990-05-23"
}
Headers:
httpCopiarEditarapikey: <sua_api_key>
Authorization: Bearer <token_jwt>
Content-Type: application/json
Resposta:
jsonCopiarEditar{
"calcular_idade": 34
}
Importante:
As funções expostas via
/rpc
devem retornar um tipo válido (ex: scalar, tabela, void).Você sempre faz a chamada via POST, enviando os parâmetros no corpo da requisição em JSON.
Funções sem parâmetros podem ser chamadas enviando um objeto JSON vazio
{}
.Para garantir segurança, configure as permissões das funções para que apenas usuários autenticados possam executá-las, quando for o caso.
Por que usar funções via API?
Isolamento da lógica: O cliente não precisa saber como o cálculo é feito, só chama a função.
Mais segurança: Você controla o que o usuário pode executar sem dar acesso direto às tabelas.
Redução de dados trafegados: O banco retorna só o resultado final da função, não dados brutos para processar no cliente.
Last updated