gpt4 book ai didi

javascript - 如何在 Express 中向 req.url 添加查询字符串?

转载 作者:行者123 更新时间:2023-11-30 11:12:16 25 4
gpt4 key购买 nike

我想在 Express 中向 req.url 添加一个字符串。字符串看起来像这样:

?id=someID&product=bag

我无权访问客户端 html 或服务器。我从客户端得到的只是一个没有任何参数的 GET 请求。所以我尝试制作可以添加查询字符串的中间件,然后我将像往常一样解析它。想法是:

// Middleware

const addQuery = (req, res, next) => {
req.url = req.url + `?id=someID&product=bag`;
next();
}

然后在请求处理程序中:

router.get('/', addQuery, (req, res) => {
console.log(req.query.id);
console.log(req.query.product);
});

但它给了我 undefined。我不能使用任何客户端 js,也不能使用服务器端编码。不是我的 origin 向我发送此请求。

那么如何添加查询字符串来表达请求,然后成功解析呢?

最佳答案

express 似乎导出了一个名为 query 的中间件,用于解析查询字符串。因为此中间件通常在请求流的早期被调用,所以将查询字符串添加到 req.url 发生“太晚了”。

这是一个似乎有效的解决方法:

const addQuery = (req, res, next) => {
req.url = req.url + `?id=someID&product=bag`;
req.query = null; // if this isn't added, the `query` middleware
// will assume the query string is already parsed
next();
}

app.get('/', addQuery, express.query(), (req, res) => {
...
});

编辑:正如@wlh 正确建议的那样,addQuery 也可以直接修改req.query:

const addQuery = (req, res, next) => {
req.query.id = 'someID';
req.query.product = 'bag';
next();
}

这应该工作得差不多,但更干净。

关于javascript - 如何在 Express 中向 req.url 添加查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53215853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com