📅  最后修改于: 2023-12-03 14:41:04.625000             🧑  作者: Mango
在使用 Express 框架开发 Web 应用中,获取查询参数是非常常见的需求。查询参数一般是指 URL 中问号后面的一些参数,例如 https://example.com/search?q=programming&page=2
中的 q=programming
和 page=2
。
本文将介绍如何使用 Express 框架获取 URL 中的查询参数。
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
时,程序会打印出 q
和 page
查询参数,并将其返回给用户。
如果你的查询参数比较固定,例如 /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 编码和解码。Express 提供了 encodeURIComponent
和 decodeURIComponent
方法,可以方便地进行编码和解码。
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 中的查询参数。在实际使用中,我们可以根据具体场景选择不同的获取方式。同时,我们需要注意对查询参数进行编码和解码,以避免出现意外的错误。