如何在30分钟内用TypeScript编写REST API:面向初学者

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

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

开始课程

引言

现代网页开发离不开REST API。它是构建移动应用、SPA前端和微服务的基础。如果您是新手,想快速掌握后端开发,TypeScript + Express组合是理想的起点。TypeScript为JavaScript增加了强类型检查,使代码更可靠、更易理解,尤其在团队协作时。

在本指南中,我们将在30分钟内创建一个用于管理任务列表(Todo list)的完整REST API。您将学习如何配置项目、定义数据模型、创建路由以及连接数据库。没有多余的理论——只有实践和可直接运行的代码。

假设您已经安装了Node.js(版本18+)和npm。如果没有,请从官方网站下载。



1. 项目准备与依赖安装

首先初始化一个新的TypeScript项目。打开终端并执行以下命令:

mkdir my-todo-apicd my-todo-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,    "forceConsistentCasingInFileNames": true  },  "include": ["src/**/*"],  "exclude": ["node_modules", "dist"]}

创建src文件夹和src/index.ts文件——这将是应用的入口点。

在package.json中添加脚本以便于运行:

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


2. 创建基础Express服务器

现在编写一个最小的Express服务器,监听3000端口。打开src/index.ts并添加以下代码:

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

const app = express();const PORT = 3000;

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

// 用于检查的基本路由app.get('/', (req: Request, res: Response) => { res.send('Todo API正在运行!');});

app.listen(PORT, () => { console.log(`服务器已启动,地址为 http://localhost:${PORT}`);});

使用命令npm run dev启动服务器,然后在浏览器中打开http://localhost:3000。您应该会看到消息"Todo API正在运行!"。



3. 定义数据模型和内存存储

为简单起见,我们暂不连接数据库,而是使用内存中的临时存储。创建文件src/models/todo.ts:

export interface Todo {  id: number;  title: string;  completed: boolean;  createdAt: Date;}

export let todos: Todo[] = [ { id: 1, title: '学习TypeScript', completed: false, createdAt: new Date() }, { id: 2, title: '编写REST API', completed: false, createdAt: new Date() },];

注意使用了Todo接口——这确保了数组中的所有对象具有相同的结构。



4. 实现CRUD路由

创建文件src/routes/todos.ts,包含完整的Create、Read、Update和Delete操作路由。

import { Router, Request, Response } from 'express';import { Todo, todos } from '../models/todo';

const router = Router();

// GET /api/todos — 获取所有任务router.get('/', (req: Request, res: Response) => { res.

博客

书籍推荐