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