Saltar al contenido

Lección 10 de 20 · Lectura y práctica

Quiz: Server Actions y manejo de datos

Tipo de lección: QuizConcepto claveLas Server Actions en SvelteKit son funciones que se ejecutan exclusivamente en el servidor, permitiendo manejar operaciones sensibles como mutaciones de datos, autenticacion y acceso a bases de.

Del concepto a la práctica

Taller de esta lección

Este quiz comprueba el recorrido completo de una mutación: entrada, validación, persistencia y respuesta. Una respuesta correcta debe indicar qué parte ocurre en el servidor y qué dato puede mostrar la interfaz. No basta con afirmar que una acción es “segura”; hay que identificar qué regla evita el problema.

Ejemplo resuelto

Pregunta: el usuario envía un título vacío. Secuencia correcta: la acción lee el formulario, recorta el valor, rechaza la entrada, no escribe en almacenamiento y devuelve un error de validación. La interfaz muestra el error sin presentar una tarea creada.

Repetir un POST no lo hace idempotente por ser Server Action. En el fixture asigna clave solicitud r1 al título válido y guarda r1→t3 en el mismo registro/transacción de la creación: el segundo r1 devuelve t3 sin añadir otra fila. Para un fallo antes de confirmar debe haber cero registros; si el cliente pierde la respuesta tras confirmar, la clave permite recuperar el resultado. Una UI pending no garantiza deduplicación del servidor.

Pruébalo

  1. Escribe qué ocurre antes de tocar la base de datos.

  2. Indica qué respuesta representa un rechazo.

  3. Decide qué debe suceder si la escritura falla.

  4. Comprueba que un reintento no duplica una creación ya confirmada.

Comprueba tu resultado

Error frecuente: actualizar la lista local antes de saber si persistió; corrígelo esperando la respuesta o marcando el estado como pendiente.

Ejercicio: responde para título vacío, título válido y fallo de almacenamiento. Resultado esperado: no hay escritura en el primer caso, una creación confirmada en el segundo y un error recuperable en el tercero.

Servidor que produce HTML y navegador que lo muestra y gestiona la interacción; claves sensibles permanecen en el servidor.
CursaloMapa de práctica
Dónde se ejecuta cada parte

El servidor puede obtener datos y producir el HTML inicial. El navegador muestra el resultado y ejecuta las interacciones que necesitan estado local. Mantén las claves sensibles en el servidor y define qué parte se ejecuta en cada entorno.

Ver la infografía en tamaño completo ↗

Tipo de lección: Quiz

Concepto clave

Las Server Actions en SvelteKit son funciones que se ejecutan exclusivamente en el servidor, permitiendo manejar operaciones sensibles como mutaciones de datos, autenticacion y acceso a bases de datos sin exponer logica critica al cliente. Piensalo como un camarero en un restaurante: el cliente (navegador) solo ve el menu y hace pedidos, pero toda la preparacion de la comida (procesamiento de datos) ocurre en la cocina (servidor).

Esto mejora la seguridad y el rendimiento, ya que el codigo del servidor nunca se envia al navegador. A diferencia de las API tradicionales, las Server Actions se integran directamente con los formularios y la navegacion de SvelteKit, proporcionando una experiencia de usuario fluida con validaciones en tiempo real y manejo de errores automatico.

Como funciona en la practica

Para implementar una Server Action, creas un archivo +page.server.js (o .ts) en tu ruta de SvelteKit. Dentro, defines acciones usando actions que reciben un objeto request y devuelven datos o errores. SvelteKit maneja automaticamente el envio de formularios y la actualizacion del estado.

Paso a paso: 1) El usuario llena un formulario en el frontend. 2) SvelteKit intercepta el envio y lo redirige a la Server Action correspondiente. 3) La accion valida y procesa los datos en el servidor. 4) Devuelve un resultado que actualiza la pagina sin recarga completa. Esto elimina la necesidad de escribir manualmente fetch o manejar estados de carga complejos.

Codigo en accion

Ejemplo basico: Crear una Server Action para agregar un usuario a una base de datos.

// En +page.server.js
export const actions = {
  default: async ({ request }) => {
    const data = await request.formData();
    const name = data.get('name');
    const email = data.get('email');
    
    // Validacion
    if (!name || !email) {
      return { error: 'Nombre y email son requeridos' };
    }
    
    // Simulacion de insercion en BD
    console.log(`Usuario agregado: ${name}, ${email}`);
    return { success: true, message: 'Usuario creado exitosamente' };
  }
};

En el frontend (+page.svelte):




Errores comunes

  • Olvidar la validacion en el servidor: Confiar solo en la validacion del frontend expone vulnerabilidades. Siempre valida datos en la Server Action.
  • No manejar errores graciosamente: Si la accion falla, devuelve mensajes claros en lugar de excepciones cripticas. Usa return { error: 'Mensaje' }.
  • Exponer logica sensible: Asegurate de que codigo como claves de API o consultas SQL complejas este solo en archivos .server.
  • Ignorar el rendimiento: Evita operaciones bloqueantes en acciones; usa async/await para tareas largas.
  • Mal uso de enhance: Sin use:enhance, los formularios recargan la pagina, perdiendo la fluidez de SvelteKit.

Checklist de dominio

  1. Puedo crear una Server Action que procese datos de un formulario y devuelva resultados.
  2. Se validar entradas tanto en frontend como en servidor para seguridad.
  3. Implemento manejo de errores que muestra mensajes utiles al usuario.
  4. Uso enhance para mejorar formularios sin recargas de pagina.
  5. Diferencio claramente entre codigo de cliente y servidor en mi proyecto.
  6. Optimizo acciones para no bloquear el hilo principal del servidor.
  7. Integro Server Actions con una base de datos real para operaciones CRUD.

Implementa un sistema de comentarios con Server Actions

En este ejercicio, construiras un sistema de comentarios para un blog usando SvelteKit y Server Actions. Sigue estos pasos:

  1. Crea un nuevo proyecto SvelteKit o usa uno existente.
  2. En la ruta /blog, agrega un archivo +page.server.js con una Server Action para manejar la creacion de comentarios. La accion debe validar que el comentario no este vacio y tenga menos de 500 caracteres.
  3. En +page.svelte, crea un formulario con campos para nombre (opcional), email (opcional), y comentario (requerido). Usa use:enhance para enviar el formulario sin recarga.
  4. Al enviar, muestra un mensaje de exito o error basado en la respuesta de la Server Action.
  5. Agrega una lista que muestre los comentarios existentes (puedes simularlos con un array en memoria en el servidor).
  6. Prueba la validacion intentando enviar un comentario vacio o demasiado largo.
Pistas
  • Usa formData() en la Server Action para acceder a los datos del formulario.
  • Para simular almacenamiento, declara un array fuera de la accion en +page.server.js y actualizalo al agregar comentarios.
  • Recuerda resetear el formulario despues de un envio exitoso usando la funcion enhance.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.

Sigue con SvelteKit Full-Stack: Construye Aplicaciones Web Performantes con Server Actions

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.