¿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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Backend | el código del servidor que contesta las peticiones | |
| Petición | un mensaje que pide algo al servidor | GET /orders/17 |
| Respuesta | la contestación del servidor: un código de estado y un cuerpo | |
| Ruta | un método y una dirección que el backend conoce | POST /tickets |
| Manejador | la función que se ejecuta para una ruta | |
| Código de estado | un número que dice cómo fue la petición | 404 |
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étodo | Dirección | Manejador | Qué hace |
|---|---|---|---|
| GET | /orders/17 | getOrder | Devuelve el estado del pedido 17 |
| GET | /orders/99 | getOrder | Contesta 404: ese pedido no existe |
| POST | /tickets | createTicket | Guarda una queja nueva |
| GET | /riders | ninguno | Contesta 404: ruta desconocida |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Prueba: envía tres peticiones
// 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
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' }));