Создание REST API с помощью TypeScript и Express

TypeScript и Express — это мощное сочетание для создания надежных REST API. TypeScript обеспечивает безопасность типов, улучшенный инструментарий и улучшенный опыт разработки, в то время как Express — это минималистский веб-фреймворк для Node.js. В этом руководстве будут рассмотрены шаги по созданию REST API с использованием TypeScript и Express.

Настройка проекта

Начните с создания нового каталога для проекта и инициализации приложения Node.js.

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

Далее установите необходимые зависимости для Express и TypeScript.

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

Создайте файл tsconfig.json для настройки TypeScript. Выполните следующую команду:

npx tsc --init

Измените файл tsconfig.json в соответствии с потребностями проекта, включив такие параметры, как "strict", "esModuleInterop", и установив выходной каталог на "dist".

Создание Express-сервера

Создайте новую папку с именем src и внутри нее создайте файл с именем index.ts. Этот файл будет служить точкой входа для сервера 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}`);
});

Для запуска сервера используйте следующую команду:

npx ts-node src/index.ts

Определение маршрутов API

Создайте новую папку внутри src с именем routes. В этой папке создайте файл с именем userRoutes.ts для определения маршрутов для обработки запросов, связанных с пользователем.

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;

В файле index.ts импортируйте userRoutes и используйте их в приложении.

import userRoutes from './routes/userRoutes';

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

Создание уровня контроллера и сервиса

Организуйте код, создав отдельные слои для контроллеров и служб. Создайте две новые папки внутри src: controllers и services.

В папке controllers создайте файл с именем 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);
};

В папке services создайте файл с именем 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;
};

Обновите userRoutes.ts для использования следующих контроллеров:

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

const router = Router();

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

export default router;

Тестирование REST API

Для тестирования REST API используйте инструмент вроде Postman или curl для отправки запросов на конечные точки. Запустите сервер и сделайте запрос GET на /api/users и запрос POST на /api/users с полезной нагрузкой JSON.

Заключение

Выполнив эти шаги, можно создать REST API с помощью TypeScript и Express. TypeScript добавляет безопасность типов и улучшает опыт разработки, в то время как Express предоставляет простую и мощную структуру для создания RESTful-сервисов. Эту настройку можно дополнительно улучшить, добавив валидацию, обработку ошибок и более сложную бизнес-логику.