Bài học hiện đang bằng tiếng Séc. Giao diện đã được dịch – nội dung bài học sẽ sớm có.

← Cấp 3 – Bậc thầy

Bài 8 / 10 ⏱ 40 phút Premium

Server nhỏ với Express

Xây server riêng bằng Node.js và Express. API đầu tiên trả lời yêu cầu đầu tiên.

Xem này: dựng server

Express là package phổ biến nhất để xây server Node.js – rút công việc còn vài dòng. Server là dự án riêng, tách app React (nhớ: frontend và backend là hai nửa). Trong terminal:

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

Mở thư mục trong VS Code và tạo file server.js:

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

// When someone sends a GET to /api/hello, respond
app.get("/api/hello", (request, response) => {
  response.json({ message: "Hi! This is your own server. 🎉" });
});

app.listen(3900, () => {
  console.log("Server running at http://localhost:3900");
});

Chạy:

node server.js

Và mở http://localhost:3900/api/hello trong trình duyệt. Thấy phản hồi JSON? Bạn vừa xây server. Không phép màu – 10 dòng.

Trong code:

Dừng server bằng Ctrl+C. Lưu ý: sau mỗi đổi code phải dừng và chạy lại – server không phải Vite, không tự tải lại.

Xem này: server có dữ liệu

Server thường phát dữ liệu. Thêm endpoint thứ hai trước listen:

const results = [
  { opponent: "Lakeside", score: "3:1", home: true },
  { opponent: "Northgate", score: "2:2", home: false },
  { opponent: "Elmwood", score: "4:0", home: true },
];

app.get("/api/results", (request, response) => {
  response.json(results);
});

Khởi động lại server và mở http://localhost:3900/api/results – dữ liệu của bạn, qua API. Mọi website lớn hoạt động vậy (chỉ dùng database thay mảng).

Đến lượt bạn 💪

  1. Chạy server theo hướng dẫn.
  2. Thêm endpoint dữ liệu dự án: 🏫 /api/menu (mảng món trong tuần) · 🙋 /api/favorites (game/sách hay nhất) · 🌍 /api/trips (danh sách chuyến) · ⚽ /api/results (kết quả trận).
  3. Thêm endpoint vui /api/random trả tin khác mỗi lần:
const messages = ["We're winning today!", "Practice at 5 PM!", "Let's go, Eagles!"];

app.get("/api/random", (request, response) => {
  const random = messages[Math.floor(Math.random() * messages.length)];
  response.json({ message: random });
});
  1. Thử mọi endpoint trong trình duyệt – rồi gọi một cái bằng fetch() từ console, như bài trước.
⚠️

“Cannot GET /api/…” nghĩa là endpoint không tồn tại – kiểm tra lỗi chính tả địa chỉ và đã khởi động lại server sau khi sửa chưa. “EADDRINUSE” nghĩa là cổng 3900 đang dùng – có thể server cũ còn chạy terminal khác; tìm và dừng (Ctrl+C).

Tự kiểm tra: Server chạy cổng 3900 và trả JSON trên vài endpoint. Bạn biết frontend, đang bắt đầu backend – còn nối chúng. Bài sau làm đúng vậy với sổ lưu bút.

Điều cần nhớ từ bài học này