Javascript 如何在Express中将查询字符串添加到req.url?
我想在Express中向Javascript 如何在Express中将查询字符串添加到req.url?,javascript,node.js,express,Javascript,Node.js,Express,我想在Express中向req.url添加一个字符串。字符串如下所示: ?id=someID&product=bag 我没有访问客户端html或服务器的权限。我从客户端得到的只是一个没有任何参数的get请求。所以我试着制作中间件,添加查询字符串,然后像往常一样解析它。这个想法是: // Middleware const addQuery = (req, res, next) => { req.url = req.url + `?id=someID&product
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);
});
但是它给了我未定义的。我不能使用任何客户端js
,也不能使用服务器端编码。不是我的origin
向我发送此请求
那么,如何将查询字符串添加到express请求中,然后成功解析它呢?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();
}
这应该工作得差不多,但要干净得多。出于好奇,他能不能也在他的中间件中更新req.query对象req.query={id:'someID',product:'bag“}
@wlh duh,当然这也是可能的,而且更简单!我如何对post?server.post(“/sample redirect”,(req,res)=>{res.header(“访问控制允许源代码”,“*”);res.header(“访问控制允许头文件”,”Origin,X-Requested-With,Content-Type,application/json”);res.header(“访问控制允许方法”,“PUT,POST,GET,DELETE,OPTIONS”);console.log(“请求数据:”,req.body);return app.render(req,res,/sample redirect)”,{sample_Data:req.body});我想将发布的数据附加到URL,如/sample redirect?JSON.stringify(sample_data)