> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Resumen de funciones de backend

> Escribe lógica de backend personalizada con funciones serverless impulsadas por Deno

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Estás viendo la documentación para desarrolladores
    </div>

    <div className="dev-docs-banner-text">
      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, consulta{" "}

      <a href="/Integrations/Using-integrations#activating-backend-functions">
        Usar integraciones
      </a>

      .
    </div>
  </div>
</div>

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](https://docs.deno.com/runtime/), un runtime moderno de TypeScript. Llama a las funciones desde tu frontend [usando el SDK](/developers/references/sdk/docs/interfaces/functions), 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](/developers/backend/resources/backend-functions/automations). 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.

<Note>Cada proyecto admite un máximo de 50 funciones de backend.</Note>

## 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](/developers/backend/overview/project-structure#config-jsonc).

Cada función vive en su propio subdirectorio con un archivo `entry.ts` o `entry.js`:

<Tree>
  <Tree.Folder name="functions" defaultOpen>
    <Tree.Folder name="<function-name>" defaultOpen>
      <Tree.File name="entry.ts" />
    </Tree.Folder>
  </Tree.Folder>
</Tree>

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](/developers/backend/resources/backend-functions/automations), añade un archivo `function.jsonc`:

<Tree>
  <Tree.Folder name="functions" defaultOpen>
    <Tree.Folder name="<function-name>" defaultOpen>
      <Tree.File name="entry.ts" />

      <Tree.File name="function.jsonc" />
    </Tree.Folder>
  </Tree.Folder>
</Tree>

El archivo de configuración define el nombre de la función y el punto de entrada:

```jsonc theme={null}
{
  "name": "sendWelcomeEmail",
  "entry": "entry.ts",
}
```

| Propiedad     | Descripción                                                                                                                                                                                                                                                 |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`        | Opcional. 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.                                                                                                     |
| `entry`       | El archivo que contiene el código de la función.                                                                                                                                                                                                            |
| `automations` | Opcional. 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](/developers/backend/resources/backend-functions/automations) 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`:

```typescript theme={null}
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`](/developers/references/cli/commands/dev) para probar los cambios sin desplegar. Consulta [Desarrollo local](/developers/backend/overview/local-dev/local-development-overview) para más detalles.

## Desplegar funciones

Despliega funciones con [`functions deploy`](/developers/references/cli/commands/functions-deploy) o [`deploy`](/developers/references/cli/commands/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`](/developers/references/cli/commands/functions-pull). Para ver qué hay desplegado actualmente, usa [`functions list`](/developers/references/cli/commands/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()`](/developers/references/sdk/docs/interfaces/functions) 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.

```javascript theme={null}
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**

```bash theme={null}
curl -X POST https://your-app.base44.app/functions/sendWelcomeEmail \
  -H "Content-Type: application/json" \
  -d '{"name": "Alice"}'
```

<Note>
  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.
</Note>

## 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()`](/developers/references/sdk/docs/functions/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`](/developers/references/sdk/docs/functions/createClientFromRequest#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](/developers/references/sdk/getting-started/third-party-apis). 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`](/developers/references/cli/commands/secrets-set) para configurar variables de entorno desde el CLI.

## Ver logs

Durante el [desarrollo local](/developers/backend/overview/local-dev/local-development-overview), 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`](/developers/references/cli/commands/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](/developers/backend/overview/skills#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](/developers/references/sdk/getting-started/dynamic-types).

## Ver también

* [Automatizaciones](/developers/backend/resources/backend-functions/automations): Programa funciones o actívalas en eventos de la base de datos
* [Módulo `functions`](/developers/references/sdk/docs/interfaces/functions): Referencia del SDK para invocar funciones
* [`createClientFromRequest`](/developers/references/sdk/docs/functions/createClientFromRequest): Crear un cliente en funciones de backend
* [`functions deploy`](/developers/references/cli/commands/functions-deploy): Despliega funciones locales en Base44
* [`functions pull`](/developers/references/cli/commands/functions-pull): Descarga funciones desplegadas en tu proyecto local
* [`functions list`](/developers/references/cli/commands/functions-list): Lista todas las funciones desplegadas
* [`functions delete`](/developers/references/cli/commands/functions-delete): Elimina funciones desplegadas
* [`logs`](/developers/references/cli/commands/logs): Visualiza los logs de funciones
* [`exec`](/developers/references/cli/commands/exec): Prueba funciones de forma aislada desde scripts independientes

<Note>Esta página se tradujo con IA. Para información más precisa y actualizada, consulta la [versión en inglés](/). </Note>
