路由

55 阅读3分钟

什么是Express路由?
路由就是映射关系,在 Express 中,路由指的是客户端的请求与服务器处理函数之间的映射关系 Express 中的路由分 3 部分组成,分别是请求的类型、请求的 URL 地址、处理函数,格式如下 app.method(path, handler()) // method 具体为 get post 等

路由的匹配过程
每当⼀个请求到达服务器之后,需要先经过路由的匹配,只有匹配成功之后,才会调⽤对应的处理函数。
在匹配时,会按照路由的顺序进⾏匹配,如果请求类型和请求的 URL 同时匹配成功,则 Express 会将这次 请求,转交给对应的 function 函数进⾏处理。
在Express中,您可以使⽤路由来定义URL端点和处理请求。以下是⼀个基本的路由示例:
const express = require('express');
const app = express();
app.get('/', (req, res) => { res.send('这是根路由');
});
app.get('/about', (req, res) => { res.send('关于我们'); });
app.post('/users', (req, res) => { res.send('创建⽤户'); }); 在这个示例中,我们定义了三个路由:
根路由(/):当⽤户访问根路由时,会看到"这是根路由"的响应。
关于路由(/about):当⽤户访问关于路由时,会看到"关于我们"的响应。 创建⽤户路由(/users):当⽤户发送HTTP POST请求到/users时,会看到"创建⽤户"的响应。
路由如何接收 GET 与 POST 请求传递过来的参数
Express允许您轻松地从GET和POST请求中获取参数。在GET请求中,参数通常出现在URL中,⽽在 POST请求中,它们通常在请求体中传递。以下是如何接收这些参数的示例:
获取 GET 请求参数
在Express中,可以使⽤req.query对象来获取GET请求的参数。假设我们有⼀个URL如下: /user?id =123&name=John ,您可以这样获取参数: app.get('/user', (req, res) => { const userId = req.query.id;
const userName = req.query.name;
res.send(⽤户ID: ${userId}, ⽤户名: ${userName});
});
获取 POST 请求参数
要获取POST请求的参数,⾸先确保您在应⽤程序中使⽤了body-parser中间件。然后,您可以使⽤ req.body来访问POST参数。以下是⼀个示例: const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.post('/user', (req, res) => { const userId = req.body.id;
const userName = req.body.name;
res.send(⽤户ID: ${userId}, ⽤户名: ${userName}); });
路由如何响应:⽂本类型、HTML 类型、JSON 类型的数据
Express允许您以不同的响应类型返回数据,包括⽂本、HTML和JSON。以下是如何在路由中响应这些 不同类型数据的示例:
响应⽂本类型
app.get('/text', (req, res) => {
res.send('这是⽂本响应');
});
响应 HTML 类型 app.get('/html', (req, res) => { res.send('

这是HTML响应

');
响应 JSON 类型
app.get('/json', (req, res) => {
const jsonData = { message: '这是JSON响应' }; res.json(jsonData);
});
模块化路由
为了⽅便对路由进⾏模块化的管理,Express 不建议将路由直接挂载到 app 上,⽽是推荐将路由抽离为单独的模块。
将路由抽离为单独模块的步骤如下
创建路由模块对应的 .js ⽂件
调⽤ express.Router() 函数创建路由对象
向路由对象上挂载具体的路由
使⽤ module.exports 向外共享路由对象
使⽤ app.use() 函数注册路由模块