Saltar al contenido principal
Estás viendo la documentación para desarrolladores
Esta documentación es para desarrolladores que trabajan con la plataforma para desarrolladores de Base44. Para información sobre funciones de backend en el editor de apps, consultaUsar integraciones.
Las funciones de backend te permiten ejecutar código de backend personalizado en un entorno seguro y aislado. Usa funciones para implementar lógica de negocio que no debería ejecutarse en el navegador, conectarte a APIs de terceros con credenciales protegidas, procesar webhooks o ampliar tu app con endpoints personalizados. Las funciones de backend se ejecutan en Deno, un runtime moderno de TypeScript. Llama a las funciones desde tu frontend usando el SDK, que se encarga de la autenticación automáticamente. Cada función también obtiene su propio endpoint HTTP para webhooks e integraciones externas. Las funciones también pueden ejecutarse automáticamente usando automatizaciones. Programa funciones para que se ejecuten en momentos concretos o actívalas en respuesta a eventos de la base de datos, como crear, actualizar o eliminar registros.
Cada proyecto admite un máximo de 50 funciones de backend.

Crear funciones

Crea funciones de backend como archivos TypeScript en el directorio de funciones de tu proyecto. Por defecto, el directorio de funciones es base44/functions/, pero puedes personalizar la ruta en tu configuración del proyecto. Cada función vive en su propio subdirectorio con un archivo entry.ts o entry.js:
functions
<function-name>
entry.ts
El CLI usa la ruta del directorio relativa a la raíz de funciones como nombre de la función. Por ejemplo, functions/sendWelcomeEmail/entry.ts crea una función llamada sendWelcomeEmail. También puedes anidar funciones en subdirectorios para organizarlas. functions/email/send/entry.ts crea una función llamada email/send.

Añadir un archivo de configuración

Para necesidades avanzadas como nombres de función personalizados o automatizaciones, añade un archivo function.jsonc:
functions
<function-name>
entry.ts
function.jsonc
El archivo de configuración define el nombre de la función y el punto de entrada:
{
  "name": "sendWelcomeEmail",
  "entry": "entry.ts",
}
PropiedadDescripción
nameOpcional. Identificador único de la función. Se usa al invocarla vía SDK o HTTP. Por defecto es la ruta del directorio relativa a la raíz de funciones.
entryEl archivo que contiene el código de la función.
automationsOpcional. Array de configuraciones de automatización para ejecutar la función según un calendario o en respuesta a eventos de la base de datos. Consulta Automatizaciones para más detalles.

entry.ts

El archivo de código contiene la lógica de tu función. Las funciones deben usar el wrapper Deno.serve() y devolver 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 });
  }
});

Probar localmente

Ejecuta tus funciones localmente con base44 dev para probar los cambios sin desplegar. Consulta Desarrollo local para más detalles.

Desplegar funciones

Despliega funciones con functions deploy o deploy para enviar todos los recursos del proyecto a la vez. Puedes desplegar funciones específicas por nombre con functions deploy <names...>, o usar --force para eliminar funciones remotas que no se encuentren localmente. Para descargar funciones desplegadas en tu proyecto local, usa functions pull. Para ver qué hay desplegado actualmente, usa functions list.

Llamar a funciones

Llama a las funciones de backend desde tu frontend usando el SDK, o vía HTTP para webhooks e integraciones externas.

Vía el SDK

Usa base44.functions.invoke() para llamar a funciones desde tu frontend. El SDK se encarga de la autenticación automáticamente, pasando las credenciales del usuario actual a tu función.
import { base44 } from "@/api/base44Client";

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

Vía HTTP

Cada función desplegada obtiene un endpoint HTTP en:
https://<your-app-domain>/functions/<function-name>
Esto es útil para:
  • Webhooks: Recibe callbacks de servicios externos como Stripe o GitHub.
  • Integraciones externas: Permite que otros sistemas interactúen con tu app.
  • Pruebas: Llama a las funciones directamente con herramientas como cURL o Postman.
Ejemplo de uso
curl -X POST https://your-app.base44.app/functions/sendWelcomeEmail \
  -H "Content-Type: application/json" \
  -d '{"name": "Alice"}'
Al llamar a las funciones vía HTTP directo (como cURL o webhooks), no hay contexto de usuario autenticado. Usa asServiceRole para todas las operaciones en estos casos.

Usar el SDK en funciones

Dentro de tus funciones de backend, puedes acceder a los datos, la autenticación y las integraciones de tu app a través del SDK de Base44. Usa createClientFromRequest() para crear un cliente a partir de la solicitud entrante. El contexto de autenticación depende de cómo se llamó a la función:
  • Cuando se llama vía el SDK desde tu frontend: La autenticación del usuario se transmite automáticamente. Puedes acceder al usuario actual con base44.auth.me() y realizar operaciones con sus permisos. Para operaciones de nivel administrador, usa asServiceRole.
  • Cuando se llama vía HTTP directo (cURL, webhooks, servicios externos): No hay un usuario autenticado, así que usa asServiceRole para todas las operaciones.

Conectarse a APIs de terceros

Las funciones de backend son una de las varias formas de conectarse a APIs de terceros. Son ideales cuando necesitas control total sobre las solicitudes o quieres almacenar claves de API de forma segura como variables de entorno. Usa secrets set para configurar variables de entorno desde el CLI.

Ver logs

Durante el desarrollo local, la salida de la función se imprime directamente en tu terminal sin necesidad del comando logs. Para funciones desplegadas, visualiza los logs con el comando logs. Los logs incluyen la salida de la consola, los errores y la información de tiempos. Puedes filtrar por nombre de función o rango de tiempo. Si usas un agente de IA para programación, la skill base44-troubleshooter puede obtener y analizar estos logs automáticamente.

Tipos de TypeScript

Genera tipos de TypeScript a partir de las configuraciones de tus funciones para obtener seguridad de tipos y autocompletado para los nombres de funciones en el código de tu SDK. Aprende más sobre los tipos dinámicos.

Ver también

Esta página se tradujo con IA. Para información más precisa y actualizada, consulta la versión en inglés.