返回

Express 中如何获取 URL 参数?常见问题解答和示例代码

javascript

如何在 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.queryreq.params 对象之间有什么区别?

  • req.query 对象包含从查询字符串中获取的参数。
  • req.params 对象包含从路由参数中获取的参数。

3. 如何从 URL 中获取多个参数?

  • 可以使用 req.queryreq.params 对象一次获取多个参数,方法是访问相应的参数名。
  • 也可以使用 Express 中的 qs 库解析查询字符串,从而一次获取多个参数。

4. 如何从嵌套的查询字符串或路由参数中获取参数?

  • 对于嵌套的查询字符串,可以使用 req.query.param1.param2 访问嵌套的参数。
  • 对于嵌套的路由参数,可以使用 req.params.param1.param2 访问嵌套的参数。

5. 如何防止 URL 参数注入攻击?

  • 对所有 URL 参数进行验证和过滤,以防止恶意输入。
  • 使用 Express 中的 express-validator 库进行数据验证。