Express.js 中如何处理 URL 查询参数

Express.js 是 Node.js 平台下一个极为流行的 Web 框架,它提供了快速、简便的方式来创建服务器和处理 HTTP 请求和响应。URL 查询参数是一个非常常见和有用的功能, 本文将介绍如何在 Express 中处理 URL 查询参数。

什么是 URL 查询参数?

URL 查询参数是指附加在 URL 后面的一组键值对,其中键值对之间使用 '&' 符号进行分隔,而键值对的键和值之间使用 '=' 符号进行分隔。查询参数通常用于传递一些可变的参数信息,例如用户的搜索关键字,页面显示的页码等等。

以下是一个 URL 查询参数的例子:

----------------------------------------------

在上面的 URL 中,'?' 后面的部分就是查询参数,它包括两个键值对:'page=2' 和 'query=node.js'。这个 URL 就表示一个用户的搜索请求,要求显示的是第二页关键字为 'node.js' 的搜索结果。接下来,我们将看到如何在 Express 中解析和处理这些查询参数。

处理 URL 查询参数

在 Express 中,我们可以通过 req 对象来获取 URL 查询参数。req.query 是一个对象,包含了所有的查询参数信息。

以下是一个简单的 Express 应用程序,使用 req.query 来获取查询参数,并返回它们的值:

----- ------- - -------------------
----- --- - ----------

------------------ ------------- ---- -
  ----- ---- - ---------------
  ----- ----- - ----------------
  --------------------------------------------
---

---------------- ---------- -
  ------------------------- -------
---

在上面的例子中,我们使用 app.get() 函数来定义一个接受 GET 请求的 /search URL,当用户请求这个 URL 时,我们使用 req.query 来获取两个查询参数:'page' 和 'query',然后将它们返回给客户端。

以下是使用 curl 命令发送请求,并查看服务器的响应的方式:

- ---- ---------------------------------------------------
------------------------

查询参数的默认值

有时,某些查询参数可能不是必需的,因此它们的值可能为空。当我们试图访问这些未设置的查询参数的值时,是否会出现错误呢?答案是不会。Express.js 会自动将未设置的查询参数的值设置为 undefined。

如果我们不想在代码中使用 if (xxx == undefined) 这样的语句来判断查询参数是否存在,我们可以为每个查询参数设置一个默认值。Express.js 提供了一个函数来完成这个操作。

以下是一个例子:

----- ------- - -------------------
----- --- - ----------

------------------ ------------- ---- -
  ----- ---- - -------------- -- --  -- -- ---- ----- -
  ----- ----- - --------------- -- ----------  -- -- ----- ----- ---------
  --------------------------------------------
---

---------------- ---------- -
  ------------------------- -------
---

在这个例子中,我们使用 || 运算符来为两个查询参数设置默认值。如果查询参数未设置,则使用默认值。例如,当用户直接访问 /search URL 时,page 的值将被设置为 1,而 query 的值将被设置为 'node.js'。

编码查询参数

由于 HTTP 请求是基于文本的,因此它只能传输 ASCII 字符,因此我们必须对一些非 ASCII 字符进行编码,如:空格、中文等。在 URL 中,编码方式是使用百分比编码(Percent-encoding)的方式。

例如,当我们将中文传递给服务器时,可以使用 encodeURIComponent() 函数将它编码:

----- ------- - -------------------
----- --- - ----------

------------------ ------------- ---- -
  ----- ----- - ----------------
  ----- ------------- - --------------------------
  ---------------------------------------------------------
---

---------------- ---------- -
  ------------------------- -------
---

在上面的例子中,我们使用 encodeURIComponent() 函数将查询字符串进行编码,然后返回它的编码结果。例如,当用户请求 /search?query=中文 时,我们将把它编码为 %E4%B8%AD%E6%96%87。

结论

使用 Express.js 来处理 URL 查询参数是一个很常见的任务,尤其是在构建 Web 应用程序时。在本文中,我们了解了如何使用 req.query 对象来获取 URL 查询参数,如何为查询参数设置默认值,及如何对查询参数进行编码。这些技术都可以帮助我们更有效地构建 Web 应用程序。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6713292ead1e889fe20adafa