¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Qué hace un backend con una petición

Después de esta lección: Puedo explicar qué hace un backend con una petición.

Lección de 50 minSin comandos

¿Dónde está mi pedido?

Pides la cena con una app de reparto. Tocas "Seguir pedido" y aparece: "Lucía va de camino".

Tu móvil no sabía dónde estaba Lucía. Envió un mensaje a un ordenador de la empresa. Ese ordenador buscó el pedido y contestó. El código que hace eso es el backend.

Al final de esta lección

Nota

Puedo explicar qué hace un backend con una petición.

Palabras clave

PalabraQué significaEjemplo
Backendel código del servidor que contesta las peticiones
Peticiónun mensaje que pide algo al servidorGET /orders/17
Respuestala contestación del servidor: un código de estado y un cuerpo
Rutaun método y una dirección que el backend conocePOST /tickets
Manejadorla función que se ejecuta para una ruta
Código de estadoun número que dice cómo fue la petición404

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La ruta elige al manejador

Cada petición trae un método y una dirección. GET significa "dame". POST significa "toma algo nuevo".

El backend tiene una lista de rutas. Busca la que coincide con la petición. Después ejecuta su manejador, la función que hace el trabajo.

Si ninguna coincide, contesta 404: no encontrado.

Ejemplo: las rutas de la app de reparto

MétodoDirecciónManejadorQué hace
GET/orders/17getOrderDevuelve el estado del pedido 17
GET/orders/99getOrderContesta 404: ese pedido no existe
POST/ticketscreateTicketGuarda una queja nueva
GET/ridersningunoContesta 404: ruta desconocida

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Prueba: envía tres peticiones

Código: node
// Un backend pequeño para seguir pedidos de una app de reparto.
const orders = {
  17: { status: 'en camino', rider: 'Lucía' },
  18: { status: 'entregado', rider: 'Iván' },
};

function getOrder(id) {
  if (!(id in orders)) {
    return { status: 404, body: { error: 'Ese pedido no existe' } };
  }
  return { status: 200, body: orders[id] };
}

function handle(request) {
  if (request.method === 'GET' && request.path.startsWith('/orders/')) {
    return getOrder(request.path.slice(8));
  }
  return { status: 404, body: { error: 'Ruta desconocida' } };
}

console.log(handle({ method: 'GET', path: '/orders/17' }));
console.log(handle({ method: 'GET', path: '/orders/99' }));
console.log(handle({ method: 'GET', path: '/riders' }));

Un manejador comprueba, usa datos y responde

Casi todos los manejadores hacen tres cosas, siempre en este orden.

Primero comprueban la petición. Si falta algo, contestan 400: petición incorrecta. Después leen o cambian datos, casi siempre en una base de datos. Por último envían la respuesta: un código de estado y un cuerpo, normalmente en JSON.

Un error frecuente

Advertencia

Mucha gente cree que un 404 significa que el servidor se ha caído. No es así: un 404 es una respuesta, así que el servidor funciona. Solo dice que lo pedido no existe. Si el servidor falla por dentro, contesta 500, o no contesta nada.

Practica: añade una ruta

Código: node
const tickets = [];

function createTicket(body) {
  if (!body.message) {
    return { status: 400, body: { error: 'Falta el mensaje' } };
  }
  tickets.push(body.message);
  return { status: 201, body: { id: tickets.length } };
}

function handle(request) {
  if (request.method === 'POST' && request.path === '/tickets') {
    return createTicket(request.body);
  }
  // Añade aquí una ruta: GET /tickets responde 200 con la lista de tickets.
  return { status: 404, body: { error: 'Ruta desconocida' } };
}

console.log(handle({ method: 'POST', path: '/tickets', body: { message: 'Falta una bebida' } }));
console.log(handle({ method: 'POST', path: '/tickets', body: {} }));
console.log(handle({ method: 'GET', path: '/tickets' }));

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.