← Úroveň 3 – Mistr

Lekce 8 z 10 ⏱ 40 minut

Malý server v Expressu

Postavíš vlastní server v Node.js a Expressu. Tvoje první API odpoví na první požadavek.

Ukaž mi to: založení serveru

Express je nejoblíbenější balíček pro stavbu serverů v Node.js – dělá z toho pár řádků. Server je samostatný projekt, oddělený od React aplikace (pamatuj: frontend a backend jsou dvě půlky). V terminálu:

cd Desktop
mkdir muj-server
cd muj-server
npm init -y
npm install express

Otevři složku ve VS Code a vytvoř soubor server.js:

const express = require("express");
const aplikace = express();

// Když někdo pošle GET na /api/pozdrav, odpověz
aplikace.get("/api/pozdrav", (pozadavek, odpoved) => {
  odpoved.json({ zprava: "Ahoj! Tady tvůj vlastní server. 🎉" });
});

aplikace.listen(3900, () => {
  console.log("Server běží na http://localhost:3900");
});

Spusť ho:

node server.js

A otevři v prohlížeči http://localhost:3900/api/pozdrav. Vidíš JSON odpověď? Právě jsi postavil(a) server. Žádná magie – 10 řádků.

Co se v kódu děje:

Server vypneš Ctrl+C. A pozor: po každé změně kódu ho musíš vypnout a zapnout znovu – server není Vite, sám se neobnoví.

Ukaž mi to: server s daty

Server obvykle rozdává data. Přidej nad listen druhý endpoint:

const vysledky = [
  { souper: "Lipová", skore: "3:1", doma: true },
  { souper: "Rohatec", skore: "2:2", doma: false },
  { souper: "Kyjov", skore: "4:0", doma: true },
];

aplikace.get("/api/vysledky", (pozadavek, odpoved) => {
  odpoved.json(vysledky);
});

Restartuj server a otevři http://localhost:3900/api/vysledky – tvoje data, servírovaná přes API. Přesně takhle (jen s databází místo pole) funguje každý velký web.

Teď ty 💪

  1. Rozjeď server podle návodu.
  2. Přidej endpoint s daty svého projektu: 🏫 /api/jidelnicek (pole jídel na týden) · 🙋 /api/oblibene (tvoje top hry/knihy) · 🌍 /api/vylety (seznam výletů) · ⚽ /api/vysledky (výsledky zápasů).
  3. Přidej hravý endpoint /api/nahoda, který vrátí pokaždé jinou hlášku:
const hlasky = ["Dnes to vyhrajeme!", "Trénink v 17:00!", "Sokol do toho!"];

aplikace.get("/api/nahoda", (pozadavek, odpoved) => {
  const nahodna = hlasky[Math.floor(Math.random() * hlasky.length)];
  odpoved.json({ hlaska: nahodna });
});
  1. Vyzkoušej všechny endpointy v prohlížeči – a pak si zkus jeden zavolat přes fetch() z konzole, jak umíš z minulé lekce.
⚠️

„Cannot GET /api/…” znamená, že endpoint neexistuje – zkontroluj překlep v adrese a jestli jsi server po změně restartoval(a). „EADDRINUSE” znamená, že port 3900 už někdo používá – nejspíš ti běží starý server v jiném terminálu; najdi ho a vypni (Ctrl+C).

Kontrola: Tvůj server běží na portu 3900 a odpovídá na několika endpointech vlastními daty v JSON. Frontend umíš, backend začínáš – zbývá je propojit. Přesně to uděláme v příští lekci s návštěvní knihou.

Co si z téhle lekce odnést