Создание 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-сервисов. Эту настройку можно дополнительно улучшить, добавив валидацию, обработку ошибок и более сложную бизнес-логику.