Skip to content

Inicio Rápido

Estado verificado al 28 de marzo de 2026. Nota de runtime: FastFN auto-instala dependencias locales por función desde requirements.txt / package.json; en fastfn dev --native necesitas runtimes instalados en host, mientras que fastfn dev depende de Docker daemon activo.

Vista rápida

  • Complejidad: Principiante
  • Tiempo típico: 10-15 minutos
  • Alcance: crear una función, levantar local, llamar endpoint y validar OpenAPI
  • Resultado esperado: endpoint GET /hello funcionando y docs en /docs

Prerrequisitos

  • CLI de FastFN instalado y disponible en PATH
  • Un modo de ejecución listo:
  • Modo portable: Docker daemon activo
  • Modo native: openresty y runtimes de host disponibles

1. Crea tu primera función (path neutral)

mkdir -p functions/hello

Elige una implementación runtime dentro de functions/hello/:

Archivo: functions/hello/handler.js

exports.handler = async (event) => ({
  status: 200,
  body: { hello: event.query?.name || "World", runtime: "node" }
});

Archivo: functions/hello/handler.py

def handler(event):
    name = (event.get("query") or {}).get("name", "World")
    return {"status": 200, "body": {"hello": name, "runtime": "python"}}

Archivo: functions/hello/handler.rs

use serde_json::{json, Value};

pub fn handler(event: Value) -> Value {
    let name = event
        .get("query")
        .and_then(|q| q.get("name"))
        .and_then(|n| n.as_str())
        .unwrap_or("World");

    json!({
        "status": 200,
        "body": {
            "hello": name,
            "runtime": "rust"
        }
    })
}

Archivo: functions/hello/handler.php

<?php

function handler(array $event): array {
    $query = $event['query'] ?? [];
    $name = $query['name'] ?? 'World';

    return [
        'status' => 200,
        'body' => [
            'hello' => $name,
            'runtime' => 'php',
        ],
    ];
}

2. Inicia el servidor local

fastfn dev functions

3. Valida con curl (por runtime)

curl -sS 'http://127.0.0.1:8080/hello?name=World'
curl -sS 'http://127.0.0.1:8080/hello?name=World'
curl -sS 'http://127.0.0.1:8080/hello?name=World'
curl -sS 'http://127.0.0.1:8080/hello?name=World'

Forma esperada de respuesta:

{
  "hello": "World",
  "runtime": "<runtime-seleccionado>"
}

4. Valida documentación generada

curl -sS 'http://127.0.0.1:8080/openapi.json' | jq '.paths | has("/hello")'

Salida esperada:

true

Swagger UI mostrando rutas de FastFN

Checklist de validación

  • GET /hello devuelve HTTP 200
  • /openapi.json contiene /hello
  • /docs carga y muestra la ruta

Solución de problemas

  • Runtime caído o 503: revisa /_fn/health y dependencias de host faltantes
  • Ruta faltante: confirma layout y relanza discovery (/_fn/reload)
  • /docs vacío: valida que no se desactivaron toggles de docs/OpenAPI
Última revisión: 28 de marzo de 2026 · Docs en fastfn.dev