📌  相关文章
📜  express 从 url 获取查询参数 - Javascript (1)

📅  最后修改于: 2023-12-03 14:41:04.625000             🧑  作者: Mango

Express 从 URL 获取查询参数

在使用 Express 框架开发 Web 应用中,获取查询参数是非常常见的需求。查询参数一般是指 URL 中问号后面的一些参数,例如 https://example.com/search?q=programming&page=2 中的 q=programmingpage=2

本文将介绍如何使用 Express 框架获取 URL 中的查询参数。

获取查询参数的方式
1. 通过 req.query 获取

Express 提供了 req.query 对象,可以轻松地获取查询参数,例如:

const express = require('express')
const app = express()

app.get('/search', (req, res) => {
  const q = req.query.q
  const page = req.query.page

  console.log(q) // 输出:programming
  console.log(page) // 输出:2

  res.send('Search query: ' + q + ', page: ' + page)
})

app.listen(3000, () => {
  console.log('Example app listening on port 3000!')
})

在上面的代码中,我们定义了一个 /search 路由,当用户访问 /search?q=programming&page=2 时,程序会打印出 qpage 查询参数,并将其返回给用户。

2. 通过 req.params 获取

如果你的查询参数比较固定,例如 /users/:id 中的 id 参数,你可以使用 req.params 对象获取。例如:

const express = require('express')
const app = express()

app.get('/users/:id', (req, res) => {
  const id = req.params.id

  console.log(id) // 输出:123

  res.send('User ID: ' + id)
})

app.listen(3000, () => {
  console.log('Example app listening on port 3000!')
})

在上面的代码中,我们定义了一个 /users/:id 路由,当用户访问 /users/123 时,程序会打印出 id 参数,并将其返回给用户。

URL 编码和解码

如果你的查询参数中包含了特殊字符,例如空格、汉字等,需要进行 URL 编码和解码。Express 提供了 encodeURIComponentdecodeURIComponent 方法,可以方便地进行编码和解码。

const express = require('express')
const app = express()

app.get('/search', (req, res) => {
  const q = req.query.q
  const encodedQ = encodeURIComponent(q)

  console.log(encodedQ) // 输出:programming%20language

  res.send('Search query: ' + q)
})

app.listen(3000, () => {
  console.log('Example app listening on port 3000!')
})

在上面的代码中,我们使用了 encodeURIComponent 方法对查询参数进行了编码。在实际使用中,如果需要对查询参数进行编码或解码,需要根据具体场景进行调整。

小结

通过本文的介绍,我们了解了如何使用 Express 框架获取 URL 中的查询参数。在实际使用中,我们可以根据具体场景选择不同的获取方式。同时,我们需要注意对查询参数进行编码和解码,以避免出现意外的错误。