30分钟内用TypeScript编写REST API:实战指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么选择 TypeScript 构建 REST API?

现代 Web 开发离不开清晰且可扩展的 API。TypeScript 作为 JavaScript 的严格类型化超集,能够以最少的运行时错误创建可靠的 REST API。本文将逐步指导您使用流行的 Express 框架,用 TypeScript 创建一个完整的 REST API。整个过程不超过 30 分钟,结果可直接用于实际项目。

我们将涵盖:项目初始化、TypeScript 配置、创建路由、中间件使用、错误处理以及端点测试。所有代码示例均可立即运行并适用于您的任务。



第一步:项目初始化与依赖安装

首先,为项目创建一个新目录并初始化。打开终端并运行:

mkdir my-ts-apicd my-ts-apinpm init -y

现在安装必要的包:

npm install expressnpm install -D typescript @types/node @types/express ts-node nodemon

创建 TypeScript 配置文件:

npx tsc --init

编辑 tsconfig.json 以包含以下选项:

{  "compilerOptions": {    "target": "ES2020",    "module": "commonjs",    "outDir": "./dist",    "rootDir": "./src",    "strict": true,    "esModuleInterop": true,    "skipLibCheck": true  }}

在 package.json 中添加脚本:

"scripts": {  "build": "tsc",  "start": "node dist/index.js",  "dev": "nodemon --exec ts-node src/index.ts"}


第二步:创建基本结构与第一个端点

创建一个 src 文件夹,并在其中创建文件 index.ts。我们从响应 GET 请求的简单服务器开始:

import express, { Request, Response } from 'express';

const app = express();const PORT = process.env.PORT || 3000;

// 用于解析 JSON 的中间件app.use(express.json());

// 基本路由app.get('/', (req: Request, res: Response) => { res.send('REST API in TypeScript is working!');});

app.listen(PORT, () => { console.log(`Server running at http://localhost:${PORT}`);});

使用命令 npm run dev 启动服务器,并打开 http://localhost:3000。您将看到一条欢迎消息。



创建数据模型

对于完整的 API,我们需要一个实体。让我们创建一个简单的用户模型:

// src/models/user.tsexport interface User {  id: number;  name: string;  email: string;  age: number;}

export type CreateUserDto = Omit;


第三步:实现 CRUD 操作

现在创建一个控制器和用于操作用户的路由。创建文件 src/routes/users.ts:

import { Router, Request, Response } from 'express';import { User, CreateUserDto } from '../models/user';

const router = Router();let users: User[] = [ { id: 1, name: 'Ivan', email: 'ivan@example.com', age: 28 }, { id: 2, name: 'Maria', email: 'maria@example.com', age: 32 }];let nextId = 3;

// GET /users - 获取所有用户router.get('/', (req: Request, res: Response) => { res.json(users);});

// GET /users/:id - 根据 ID 获取用户router.get('/:id', (req: Request, res: Response) => { const id = parseInt(req.params.id); const user = users.find(u => u.id === id); if (!user) { return res.status(404).json({ message: 'User not found' }); } res.json(user);});

// POST /users - 创建新用户router.post('/', (req: Request, res: Response) => { const { name, email, age }: CreateUserDto = req.body; if (!name || !email || !age) { return res.status(400).js

博客

书籍推荐