使用 TypeScript 和 Express 构建 REST API
TypeScript 和 Express 是构建强大 REST API 的强大组合。TypeScript 提供类型安全、更好的工具和增强的开发体验,而 Express 是 Node.js 的极简 Web 框架。本指南将逐步介绍使用 TypeScript 和 Express 构建 REST API 的步骤。
设置项目
首先为项目创建一个新目录并初始化一个 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 等工具向端点发送请求。启动服务器并使用 JSON 负载向 /api/users
发出 GET 请求,向 /api/users
发出 POST 请求。
结论
通过执行这些步骤,可以使用 TypeScript 和 Express 创建 REST API。TypeScript 增加了类型安全性和更好的开发体验,而 Express 提供了一个简单而强大的框架来构建 RESTful 服务。可以通过添加验证、错误处理和更复杂的业务逻辑来进一步增强此设置。