从零到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,可以让你更好地组织和管理你的代码。

相关推荐
Mintopia11 分钟前
Three.js 在数字孪生中的应用场景教学
前端·javascript·three.js
da-peng-song15 分钟前
ArcGIS arcpy代码工具——根据属性结构表创建shape图层
javascript·python·arcgis
左灯右行的爱情17 分钟前
Redis 缓存并发问题深度解析:击穿、雪崩与穿透防治指南
java·数据库·redis·后端·缓存
南玖yy34 分钟前
C++ 成员变量缺省值:引用、const 与自定义类型的初始化规则详解,引用类型和const类型的成员变量自定义类型成员是否可以用缺省值?
c语言·开发语言·c++·后端·架构·c++基础语法
不爱总结的麦穗1 小时前
面试常问!Spring七种事务传播行为一文通关
后端·spring·面试
小虚竹1 小时前
claude 3.7,极为均衡的“全能型战士”大模型,国内直接使用
开发语言·后端·claude·claude3.7
Yharim1 小时前
两个客户端如何通过websocket通信
spring boot·后端·websocket
bcbnb1 小时前
iOS 性能调优实战:三款工具横向对比实测(含 Instruments、KeyMob、Xlog)
后端
Jedi Hongbin2 小时前
echarts自定义图表--仪表盘
前端·javascript·echarts