如何使用 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 动图,展示了它在我的机器上的样子: