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

相关推荐
星栈独行20 分钟前
翻完 Pi 源码:它和 Codex、Claude Code 有何不同
开发语言·javascript·人工智能·程序人生
霸道流氓气质1 小时前
SpringBoot中通用工具类库(Utils)封装与使用实践
spring boot·后端·python
落落Plus1 小时前
浏览器缓存机制详解
javascript·缓存·浏览器缓存
浅水壁虎4 小时前
vue基础(第二章 )
前端·javascript·vue.js
界面开发小八哥4 小时前
界面控件DevExtreme v26.1新版亮点——支持Angular 22
前端·javascript·angular.js·devexpress·ui开发·devextreme
MemoleCard4 小时前
深度解析Java当中的锁机制
后端
wear工程师5 小时前
ThreadLocal 在线程池里为什么会串数据:别只会答内存泄漏
java·后端
mONESY5 小时前
React useState 核心原理与最佳实践:从异步更新到性能优化全解
javascript
腻害兔5 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?
java·前端·javascript·vue.js·产品经理·ai编程