Xây dựng REST API với TypeScript và Express

TypeScript và Express là sự kết hợp mạnh mẽ để xây dựng REST API mạnh mẽ. TypeScript cung cấp tính an toàn về kiểu, công cụ tốt hơn và trải nghiệm phát triển nâng cao, trong khi Express là một khuôn khổ web tối giản cho Node.js. Hướng dẫn này sẽ hướng dẫn từng bước để xây dựng REST API bằng TypeScript và Express.

Thiết lập dự án

Bắt đầu bằng cách tạo một thư mục mới cho dự án và khởi tạo ứng dụng Node.js.

mkdir typescript-express-api
cd typescript-express-api
npm init -y

Tiếp theo, cài đặt các phần phụ thuộc cần thiết cho Express và TypeScript.

npm install express
npm install --save-dev typescript ts-node @types/node @types/express

Tạo tệp tsconfig.json để cấu hình TypeScript. Chạy lệnh sau:

npx tsc --init

Sửa đổi tệp tsconfig.json cho phù hợp với nhu cầu của dự án, bật các tùy chọn như "strict", "esModuleInterop" và đặt thư mục đầu ra thành "dist".

Tạo máy chủ Express

Tạo một thư mục mới có tên src và bên trong đó, tạo một tệp có tên index.ts. Tệp này sẽ đóng vai trò là điểm vào cho máy chủ Express.

import express, { Request, Response } from 'express';

const app = express();
const PORT = process.env.PORT || 3000;

app.use(express.json());

app.get('/', (req: Request, res: Response) => {
  res.send('Hello, TypeScript and Express!');
});

app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

Để chạy máy chủ, hãy sử dụng lệnh sau:

npx ts-node src/index.ts

Xác định tuyến API

Tạo một thư mục mới bên trong src có tên là routes. Trong thư mục này, tạo một tệp có tên là userRoutes.ts để xác định các tuyến đường xử lý các yêu cầu liên quan đến người dùng.

import { Router, Request, Response } from 'express';

const router = Router();

router.get('/users', (req: Request, res: Response) => {
  res.json({ message: 'Get all users' });
});

router.post('/users', (req: Request, res: Response) => {
  const user = req.body;
  res.json({ message: 'User created', user });
});

export default router;

Trong tệp index.ts, hãy nhập userRoutes và sử dụng chúng trong ứng dụng.

import userRoutes from './routes/userRoutes';

app.use('/api', userRoutes);

Tạo Bộ điều khiển và Lớp dịch vụ

Tổ chức mã bằng cách tạo các lớp riêng biệt cho bộ điều khiển và dịch vụ. Tạo hai thư mục mới bên trong src: controllersservices.

Trong thư mục controllers, tạo một tệp có tên userController.ts.

import { Request, Response } from 'express';
import { getAllUsers, createUser } from '../services/userService';

export const getUsers = (req: Request, res: Response) => {
  const users = getAllUsers();
  res.json(users);
};

export const addUser = (req: Request, res: Response) => {
  const newUser = req.body;
  const user = createUser(newUser);
  res.json(user);
};

Trong thư mục services, tạo một tệp có tên userService.ts.

interface User {
  id: number;
  name: string;
}

let users: User[] = [];

export const getAllUsers = (): User[] => {
  return users;
};

export const createUser = (user: User): User => {
  users.push(user);
  return user;
};

Cập nhật userRoutes.ts để sử dụng các bộ điều khiển này:

import { Router } from 'express';
import { getUsers, addUser } from '../controllers/userController';

const router = Router();

router.get('/users', getUsers);
router.post('/users', addUser);

export default router;

Kiểm tra REST API

Để kiểm tra REST API, hãy sử dụng một công cụ như Postman hoặc curl để gửi yêu cầu đến các điểm cuối. Khởi động máy chủ và thực hiện yêu cầu GET đến /api/users và yêu cầu POST đến /api/users với tải trọng JSON.

Phần kết luận

Bằng cách làm theo các bước này, có thể tạo REST API bằng TypeScript và Express. TypeScript bổ sung tính an toàn cho kiểu và trải nghiệm phát triển tốt hơn, trong khi Express cung cấp một khuôn khổ đơn giản và mạnh mẽ để xây dựng các dịch vụ RESTful. Thiết lập này có thể được cải thiện hơn nữa bằng cách thêm xác thực, xử lý lỗi và logic kinh doanh phức tạp hơn.