返回
Express 中如何获取 URL 参数?常见问题解答和示例代码
javascript
2024-03-22 22:29:23
如何在 Express 中获取 URL 参数
简介
Express 是一个流行的 Node.js 框架,用于构建 web 应用程序。URL 参数 是附加到 URL 末尾的键值对,用于向服务器传递特定信息。在 Express 中,有几种方法可以轻松获取这些参数。
方法
从 Query String 获取参数
Query string 是附加到 URL 末尾的键值对,以问号 (?) 开头。例如,以下 URL 包含一个名为 tagid
的参数,其值为 1234
:
http://localhost:8888/p?tagid=1234
在 Express 中,可以使用 req.query
对象从查询字符串中获取参数。该对象包含一个键值对的集合,其中键是参数名,值是参数值。要获取 tagid
参数,可以使用以下代码:
const tagid = req.query.tagid;
从 Route 参数获取参数
Route 参数 是附加到 URL 路径的键值对,以冒号 (:) 开头。例如,以下 URL 包含一个名为 tagid
的路由参数,其值为 1234
:
http://localhost:8888/p/:tagid
在 Express 中,可以使用 req.params
对象从路由参数中获取参数。该对象包含一个键值对的集合,其中键是参数名,值是参数值。要获取 tagid
参数,可以使用以下代码:
const tagid = req.params.tagid;
示例代码
以下是如何使用这两种方法获取参数的示例代码:
const express = require('express');
const app = express();
// 从查询字符串获取参数
app.get('/p', (req, res) => {
const tagid = req.query.tagid;
res.send(`You are looking for tagId: ${tagid}`);
});
// 从路由参数获取参数
app.get('/p/:tagid', (req, res) => {
const tagid = req.params.tagid;
res.send(`You are looking for tagId: ${tagid}`);
});
app.listen(8888);
常见问题解答
1. 如何确定使用哪种方法获取参数?
- 使用查询字符串获取参数,当参数不属于 URL 路径的一部分时。
- 使用路由参数获取参数,当参数作为 URL 路径的一部分时。
2. req.query
和 req.params
对象之间有什么区别?
req.query
对象包含从查询字符串中获取的参数。req.params
对象包含从路由参数中获取的参数。
3. 如何从 URL 中获取多个参数?
- 可以使用
req.query
或req.params
对象一次获取多个参数,方法是访问相应的参数名。 - 也可以使用 Express 中的
qs
库解析查询字符串,从而一次获取多个参数。
4. 如何从嵌套的查询字符串或路由参数中获取参数?
- 对于嵌套的查询字符串,可以使用
req.query.param1.param2
访问嵌套的参数。 - 对于嵌套的路由参数,可以使用
req.params.param1.param2
访问嵌套的参数。
5. 如何防止 URL 参数注入攻击?
- 对所有 URL 参数进行验证和过滤,以防止恶意输入。
- 使用 Express 中的
express-validator
库进行数据验证。