Pular para o conteúdo principal
Você está vendo a documentação para desenvolvedores
Esta documentação é para desenvolvedores que trabalham com a plataforma para desenvolvedores Base44. Para informações sobre funções de backend no editor de apps, vejaUsando integrações.
As funções de backend permitem que você execute código customizado de backend em um ambiente seguro e isolado. Use funções para implementar lógica de negócio que não deve rodar no navegador, conectar a APIs de terceiros com credenciais protegidas, processar webhooks ou estender seu app com endpoints customizados. As funções de backend rodam no Deno, um runtime moderno de TypeScript. Chame funções do seu frontend usando o SDK, que cuida da autenticação automaticamente. Cada função também recebe seu próprio endpoint HTTP para webhooks e integrações externas. As funções também podem rodar automaticamente usando automations. Agende funções para rodar em horários específicos ou dispare-as em resposta a eventos do banco de dados como criar, atualizar ou excluir registros.
Cada projeto suporta no máximo 50 funções de backend.

Criar funções

Crie funções de backend como arquivos TypeScript no diretório de funções do seu projeto. Por padrão o diretório de funções é base44/functions/, mas você pode personalizar o caminho na configuração do seu projeto. Cada função fica em seu próprio subdiretório com um arquivo entry.ts ou entry.js:
functions
<function-name>
entry.ts
A CLI usa o caminho do diretório relativo à raiz de funções como o nome da função. Por exemplo, functions/sendWelcomeEmail/entry.ts cria uma função chamada sendWelcomeEmail. Você também pode aninhar funções em subdiretórios para organização. functions/email/send/entry.ts cria uma função chamada email/send.

Adicionando um arquivo de configuração

Para necessidades avançadas como nomes customizados de função ou automations, adicione um arquivo function.jsonc:
functions
<function-name>
entry.ts
function.jsonc
O arquivo de configuração define o nome e o entry point da função:
{
  "name": "sendWelcomeEmail",
  "entry": "entry.ts",
}
PropriedadeDescrição
nameOpcional. Identificador único da função. Usado ao invocar pelo SDK ou HTTP. O padrão é o caminho do diretório relativo à raiz de funções.
entryO arquivo contendo o código da função.
automationsOpcional. Array de configurações de automation para executar a função em um cronograma ou em resposta a eventos do banco de dados. Veja Automations para detalhes.

entry.ts

O arquivo de código contém a lógica da sua função. As funções devem usar o wrapper Deno.serve() e retornar objetos Response:
import { createClientFromRequest } from "npm:@base44/sdk";

Deno.serve(async (req) => {
  try {
    const base44 = createClientFromRequest(req);
    const user = await base44.auth.me();

    if (!user) {
      return Response.json({ error: "Unauthorized" }, { status: 401 });
    }

    const { name } = await req.json();

    return Response.json({
      message: `Hello, ${name || user.full_name}!`,
    });
  } catch (error) {
    return Response.json({ error: error.message }, { status: 500 });
  }
});

Teste localmente

Execute suas funções localmente com base44 dev para testar mudanças sem fazer deploy. Veja Desenvolvimento local para detalhes.

Implante funções

Implante funções com functions deploy ou deploy para enviar todos os recursos do projeto de uma vez. Você pode implantar funções específicas pelo nome com functions deploy <names...>, ou usar --force para remover funções remotas não encontradas localmente. Para baixar funções implantadas para seu projeto local, use functions pull. Para ver o que está implantado atualmente, use functions list.

Chamar funções

Chame funções de backend do seu frontend usando o SDK, ou via HTTP para webhooks e integrações externas.

Pelo SDK

Use base44.functions.invoke() para chamar funções do seu frontend. O SDK cuida da autenticação automaticamente, passando as credenciais do usuário atual para sua função.
import { base44 } from "@/api/base44Client";

const response = await base44.functions.invoke("sendWelcomeEmail", {
  name: "Alice",
});

Via HTTP

Cada função implantada recebe um endpoint HTTP em:
https://<your-app-domain>/functions/<function-name>
Isso é útil para:
  • Webhooks: Receba callbacks de serviços externos como Stripe ou GitHub.
  • Integrações externas: Permita que outros sistemas interajam com seu app.
  • Testes: Chame funções diretamente com ferramentas como cURL ou Postman.
Exemplo de uso
curl -X POST https://your-app.base44.app/functions/sendWelcomeEmail \
  -H "Content-Type: application/json" \
  -d '{"name": "Alice"}'
Ao chamar funções via HTTP direto (como cURL ou webhooks), não há contexto de usuário autenticado. Use asServiceRole para todas as operações nesses casos.

Use o SDK em funções

Dentro das suas funções de backend, você pode acessar os dados, autenticação e integrações do seu app através do SDK da Base44. Use createClientFromRequest() para criar um cliente a partir da requisição recebida. O contexto de autenticação depende de como a função foi chamada:
  • Quando chamada pelo SDK do seu frontend: A autenticação do usuário é passada automaticamente. Você pode acessar o usuário atual com base44.auth.me() e realizar operações com suas permissões. Para operações de nível admin, use asServiceRole.
  • Quando chamada via HTTP direto (cURL, webhooks, serviços externos): Não há usuário autenticado, então use asServiceRole para todas as operações.

Conectar a APIs de terceiros

As funções de backend são uma das várias formas de conectar a APIs de terceiros. Elas são ideais quando você precisa de controle total sobre as requisições ou quer armazenar API keys com segurança como variáveis de ambiente. Use secrets set para configurar variáveis de ambiente pela CLI.

Veja logs

Durante o desenvolvimento local, a saída da função é impressa diretamente no seu terminal sem precisar do comando logs. Para funções implantadas, veja logs com o comando logs. Os logs incluem saída do console, erros e informações de tempo. Você pode filtrar por nome da função ou intervalo de tempo. Se você está usando um agente de codificação de IA, a skill base44-troubleshooter pode buscar e analisar esses logs automaticamente.

Tipos TypeScript

Gere tipos TypeScript a partir das configurações das suas funções para obter segurança de tipo e autocomplete para nomes de função no seu código do SDK. Saiba mais sobre tipos dinâmicos.

Veja também

Esta página foi traduzida usando IA. Para informações mais precisas e atualizadas, consulte a versão em inglês.