Quiz: Server Actions y manejo de datos

Quiz
10 min~4 min lectura

Quiz Interactivo

Pon a prueba tus conocimientos

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):



 {
  form.reset();
  return async ({ result }) => {
    if (result.data?.success) {
      alert(result.data.message);
    }
  };
}}>
  
  
  Agregar Usuario
  {#if form?.error}
    

{form.error}

{/if}

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.