使用 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 内创建两个新文件夹:controllersservices

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 服务。可以通过添加验证、错误处理和更复杂的业务逻辑来进一步增强此设置。