Skip to main content
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.
Ten en cuenta lo siguiente:
  • Desplegar funciones una a una no está limitado a 50. Una sola solicitud que reemplace todas las funciones de tu proyecto sigue teniendo un límite de 50.
  • Las funciones de backend tienen un tiempo máximo de ejecución de 5 minutos, aplicado de la misma forma tanto si la función se llama directamente, si la activa una automatización, o si se invoca como un paso de un workflow. Las solicitudes que superan este límite se terminan.

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:

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:

Varios archivos por función

Una función no se limita a un solo entry.ts. Divide la lógica en varios archivos dentro del directorio de la función e impórtalos con rutas relativas. Cada archivo .js, .ts, .json y .jsonc del directorio de la función se despliega con la función.
functions
process-order
entry.ts
validate.ts
types.ts
Las importaciones relativas se resuelven al desplegar. Una importación que apunta a un archivo que no se despliega con la función, como un archivo del directorio de otra función, falla al desplegar.

Compartir código entre funciones

Para reutilizar código entre funciones, colócalo en un directorio shared dentro de tu carpeta base44/. Cuando despliegas una función, el CLI sube el directorio shared junto con ella, y el servidor empaqueta solo los archivos compartidos que esa función importa. Cada función se despliega con su propia copia del código compartido que usa. Esto significa que:
  • Cualquier función puede importar desde shared con una ruta relativa.
  • Distintas funciones pueden acabar ejecutando versiones distintas del mismo archivo compartido. Cambiar un archivo compartido y desplegar una sola función actualiza solo la copia de esa función. Las demás mantienen la versión anterior hasta que las vuelvas a desplegar. Para aplicar un cambio compartido en todas partes, ejecuta base44 functions deploy sin argumentos para volver a desplegar todas las funciones a la vez.
base44
shared
response.ts
functions
greet
entry.ts
farewell
entry.ts
Las importaciones relativas pueden llegar a base44/shared/, pero no pueden salir de base44/. Para usar código de fuera de base44/, muévelo a base44/shared/ o impórtalo con un especificador npm: o jsr:.

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.

Vía HTTP

Cada función desplegada obtiene un endpoint HTTP en:
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
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 fue traducida con IA. Para obtener la información más precisa y actualizada, consulta la versión en inglés.