从零到RESTful API:Express路由设计速成手册

一、什么是路由?

简单来说,路由就是根据客户端请求的 URL 和 HTTP 方法(例如 GET、POST、PUT、DELETE),将请求导向特定的处理函数(也称为路由处理程序或中间件)。

二、Express 路由的基本结构

在 Express 中,路由的基本结构如下:

javascript 复制代码
app.METHOD(PATH, HANDLER)
  • app: Express 应用实例。
  • METHOD : HTTP 请求方法,例如 getpostputdelete 等。
  • PATH : 请求的 URL 路径,例如 /users/products/:id 等。
  • HANDLER : 处理请求的函数,它接收 req (请求对象) 和 res (响应对象) 作为参数。

示例:一个简单的 GET 路由

javascript 复制代码
const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

在这个例子中,当客户端向服务器的根路径 (/) 发送 GET 请求时,服务器会执行 (req, res) => { res.send('Hello World!'); } 这个处理函数,并向客户端发送 "Hello World!"。

三、常用的 HTTP 方法

Express 支持所有标准的 HTTP 方法,以下是一些常用的方法:

  • GET: 用于获取资源。
  • POST: 用于创建新资源。
  • PUT: 用于更新现有资源(通常是替换整个资源)。
  • PATCH: 用于更新现有资源(通常是部分更新)。
  • DELETE: 用于删除资源。

四、高阶路由技巧

1.路由参数

Express 允许你在路由路径中使用参数(动态路由),以便从 URL 中提取数据。

javascript 复制代码
app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  res.send(`User ID: ${userId}`);
});

在这个例子中,:id 是一个路由参数。当客户端访问 /users/123 时,req.params.id 的值将是 "123"。

2.链式路由

精简同类路径代码

javascript 复制代码
app.route('/api/products')
  .get((req, res) => { /* 获取产品列表 */ })
  .post((req, res) => { /* 创建新产品 */ });

3.正则表达式路由

匹配复杂URL模式

javascript 复制代码
// 匹配数字ID的路由
app.get(/^/users/(\d+)$/, (req, res) => {
  const userId = req.params[0]; // 通过数组访问捕获组
});

4.使用 express.Router 模块化路由

当你的应用变得越来越复杂时,将所有路由都放在一个文件中会变得难以维护。express.Router 允许你将路由组织成模块化的组件。

javascript 复制代码
// users.js 定义路由
const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  res.send('List of users');
});

router.get('/:id', (req, res) => {
  const userId = req.params.id;
  res.send(`User ID: ${userId}`);
});

module.exports = router;

// app.js
const express = require('express');
const app = express();
const users = require('./users');

// 中间件指定路由,即装载路由
app.use('/users', users);

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});

在这个例子中,我们将用户相关的路由放在 users.js 文件中,并使用 express.Router 创建了一个路由模块。然后在 app.js 中,我们使用 app.use('/users', users) 将该路由模块挂载到 /users 路径下。

五、总结

Express 路由是构建 Web 应用和 API 的基石。通过理解路由的基本概念和用法,你可以构建清晰、高效、易于维护的应用程序。掌握路由参数和 express.Router,可以让你更好地组织和管理你的代码。

相关推荐
vvilkim23 分钟前
深入理解 TypeScript 中的 implements 和 extends:区别与应用场景
前端·javascript·typescript
uhakadotcom2 小时前
Python 量化计算入门:基础库和实用案例
后端·算法·面试
小萌新上大分2 小时前
SpringCloudGateWay
java·开发语言·后端·springcloud·springgateway·cloudalibaba·gateway网关
uhakadotcom2 小时前
使用Python获取Google Trends数据:2025年详细指南
后端·面试·github
uhakadotcom2 小时前
使用 Python 与 Google Cloud Bigtable 进行交互
后端·面试·github
直视太阳3 小时前
springboot+easyexcel实现下载excels模板下拉选择
java·spring boot·后端
追逐时光者3 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 33 期(2025年4.1-4.6)
后端·.net
灼华十一3 小时前
Golang系列 - 内存对齐
开发语言·后端·golang
兰亭序咖啡4 小时前
学透Spring Boot — 009. Spring Boot的四种 Http 客户端
java·spring boot·后端
刺客-Andy4 小时前
前端加密方式 AES对称加密 RSA非对称加密 以及 MD5哈希算法详解
前端·javascript·算法·哈希算法