Patrones de Lógica Compartida (Equivalente a Dependencias)¶
Estado verificado al 28 de marzo de 2026. Nota de runtime: FastFN auto-instala dependencias locales por función desde
requirements.txt/package.json; enfastfn dev --nativenecesitas runtimes instalados en host, mientras quefastfn devdepende de Docker daemon activo.
Vista rápida¶
- Complejidad: Intermedio
- Tiempo típico: 15-20 minutos
- Resultado: lógica reutilizable por request sin dependency injection por decoradores
FastFN no usa dependency injection por decoradores. El equivalente es composición explícita con helpers/módulos compartidos entre funciones.
1. Patrón base: helper puro + handler¶
Estructura neutral recomendada:
En cada runtime, importa lógica compartida antes del código de negocio.
use serde_json::{json, Value};
pub fn require_api_key(event: &Value) -> Value {
let key = event["headers"]["x-api-key"].as_str().unwrap_or("");
let expected = event["env"]["API_KEY"].as_str().unwrap_or("");
if key != expected {
return json!({"ok": false, "status": 401, "error": "unauthorized"});
}
json!({"ok": true})
}
2. Reuso por clase/módulo¶
Si el equipo prefiere encapsular por clase:
- Crea servicio con config desde
event.env. - Llama métodos del servicio desde handler.
- Mantén efectos secundarios en borde del handler.
Esto cubre el caso FastAPI "classes as dependencies" con módulos nativos por lenguaje.
3. Cadenas composables (equivalente sub-dependencies)¶
Compón helpers en secuencia:
- Parsear identidad
- Autorizar rol/scope
- Validar payload
- Ejecutar lógica de negocio
Flujo corto agnóstico de runtime:
Validación¶
- Helpers compartidos usados por al menos dos funciones.
- Request no autorizado responde
401desde el guard. - Helper de validación devuelve
422determinístico.
Troubleshooting¶
- Si falla import, revisa paths relativos desde el archivo de función.
- Si diverge comportamiento entre runtimes, unifica envelope (
ok,status,error). - Si hay tests inestables, separa helpers de red y reloj.
Enlaces relacionados¶
Última revisión:
28 de marzo de 2026
·
Docs en fastfn.dev