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

相关推荐
却尘12 分钟前
当你敲下 `pnpm run dev`,这台机器到底在背后干了什么?
前端·javascript·面试
歪歪10012 分钟前
React Native开发有哪些优势和劣势?
服务器·前端·javascript·react native·react.js·前端框架
我是天龙_绍12 分钟前
java 中的 Lombok
后端
初见00114 分钟前
Spring事务失效的十大陷阱与终极解决方案
后端·架构
一个很帅的帅哥22 分钟前
伪类选择器和伪元素选择器
javascript
子夜master22 分钟前
玩转EasyExcel,看这一篇就够了!!(合并导入 自定义导出 动态表头 合并单元格)
后端
武子康25 分钟前
大数据-131 Flink CEP 实战 24 小时≥5 次交易 & 10 分钟未支付检测 案例附代码
大数据·后端·flink
Postkarte不想说话29 分钟前
Cisco配置PIM-DM
后端
程序猿有风30 分钟前
Java GC 全系列一小时速通教程
后端·面试
BingoGo31 分钟前
PHP 8.5 新特性 闭包可以作为常量表达式了
后端·php