如何使用 expressJS 在 url 中添加可变数量的参数?
How to add variable numbers of parameter in url using expressJS?
我在 nodejs 项目中使用 express 来调用端点并在控制台中打印它之后的参数。 url 可以是:
/printInfo?id=xxx&value=xxx
or
/printInfo?id=xxx
or
/printInfo?value=xxx
我该怎么做?
如何处理从 URL 中获取的数据并不完全清楚,但是 req.query
包含 URL 中的任何查询参数,您可以将该对象迭代到看看那里有什么:
for (let prop of Object.keys(req.query)) {
console.log(prop, req.query[prop]);
}
而且,这是一个模拟演示,可以在本地代码段中 运行,但您可以在 Express req.query
中使用相同类型的代码:
// define simulated req.query (this is built automatically in Express)
let req = {
query: {id: 34506, value: "0.99"}
};
// iterate arbitrary properties of req.query
for (let prop of Object.keys(req.query)) {
console.log(prop, req.query[prop]);
}
或者,如果您知道那里可能有哪些查询参数,而您只是想测试那里有哪些,您可以这样做:
if ("id" in req.query) {
// id property is present
console.log(req.query.id);
}
if ("value" in req.query) {
// value property is present
console.log(req.query.value);
}
假设您只想了解如何读取查询字符串,您只需读取 req.query
变量上的值。这是一个简单的设置:
routes/index.js
var express = require('express');
var router = express.Router();
router.get('/printInfo', (req, res, next) => {
res.send({ id: req.query.id, value: req.query.value});
});
module.exports = router;
app.js
const express = require('express');
const indexRouter = require('routes/index');
const app = express();
app.use('/', indexRouter);
app.listen(3000, () => console.log(`Example app listening on port 3000!`));
现在,当您向 http://localhost:3000/printInfo?id=1&value=test
发出请求时,您应该会看到(我安装了 JSON Formatter 扩展程序):
{
"id": "1",
"value": "test"
}
出现在那个页面。
这是一张 gif 动图,展示了它在我的机器上的样子:
我在 nodejs 项目中使用 express 来调用端点并在控制台中打印它之后的参数。 url 可以是:
/printInfo?id=xxx&value=xxx
or
/printInfo?id=xxx
or
/printInfo?value=xxx
我该怎么做?
如何处理从 URL 中获取的数据并不完全清楚,但是 req.query
包含 URL 中的任何查询参数,您可以将该对象迭代到看看那里有什么:
for (let prop of Object.keys(req.query)) {
console.log(prop, req.query[prop]);
}
而且,这是一个模拟演示,可以在本地代码段中 运行,但您可以在 Express req.query
中使用相同类型的代码:
// define simulated req.query (this is built automatically in Express)
let req = {
query: {id: 34506, value: "0.99"}
};
// iterate arbitrary properties of req.query
for (let prop of Object.keys(req.query)) {
console.log(prop, req.query[prop]);
}
或者,如果您知道那里可能有哪些查询参数,而您只是想测试那里有哪些,您可以这样做:
if ("id" in req.query) {
// id property is present
console.log(req.query.id);
}
if ("value" in req.query) {
// value property is present
console.log(req.query.value);
}
假设您只想了解如何读取查询字符串,您只需读取 req.query
变量上的值。这是一个简单的设置:
routes/index.js
var express = require('express');
var router = express.Router();
router.get('/printInfo', (req, res, next) => {
res.send({ id: req.query.id, value: req.query.value});
});
module.exports = router;
app.js
const express = require('express');
const indexRouter = require('routes/index');
const app = express();
app.use('/', indexRouter);
app.listen(3000, () => console.log(`Example app listening on port 3000!`));
现在,当您向 http://localhost:3000/printInfo?id=1&value=test
发出请求时,您应该会看到(我安装了 JSON Formatter 扩展程序):
{
"id": "1",
"value": "test"
}
出现在那个页面。
这是一张 gif 动图,展示了它在我的机器上的样子: