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

相关推荐
Noii.2 分钟前
Spring Boot初级概念及自动配置原理
java·spring boot·后端
xiaopengbc3 分钟前
火狐(Mozilla Firefox)浏览器离线安装包下载
前端·javascript·firefox
探索java9 分钟前
Tomcat Server 组件原理
java·后端·tomcat
咕白m62516 分钟前
通过 C# 高效提取 PDF 文本的完整指南
后端·c#
小高00724 分钟前
🔥🔥🔥前端性能优化实战手册:从网络到运行时,一套可复制落地的清单
前端·javascript·面试
smallyu25 分钟前
Go 语言 GMP 调度器的原理是什么
后端·go
古夕26 分钟前
my-first-ai-web_问题记录01:Next.js的App Router架构下的布局(Layout)使用
前端·javascript·react.js
Solon阿杰29 分钟前
solon-flow基于bpmnJs的流程设计器
javascript·bpmn-js
Solon阿杰30 分钟前
前端(react/vue)实现全景图片(360°)查看器
javascript·vue.js
郝学胜-神的一滴33 分钟前
Three.js 材质系统深度解析
javascript·3d·游戏引擎·webgl·材质