我使用angular来调用节点获取api。节点为req.query.reqdata收到“undefined”我应该解析服务器端的JSON吗?任何帮助将不胜感激。
客户端:
function playOrError(instrument, octave, scaletype, basenote) {
var reqdata = {
"instrument" : instrument,
"octave" : octave,
"scaletype" : scaletype,
"basenote": basenote
};
$http.get("/api/getfile", reqdata)
.then(
function(response) {
console.log("File request: " + response.data);
},
function(error) {
console.log("File request failed: " + error);
});
}
服务器:
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
extended: true
}));
...
app.get('/api/getfile', function(req, res, next) {
console.log(req.reqdata)
var instument = req.query.instrument
console.log(instrument)
})
答案 0 :(得分:0)
reqdata只是您在客户端使用的变量名,而且从未被Express看到过。相反,console.log(req.query);
应该记录一个对象(你传递给它的reqdata对象);此对象应具有您添加到该reqdata对象的值,如下所示:
{
"instrument" : instrument,
"octave" : octave,
"scaletype" : scaletype,
"basenote": basenote
}
然后你可以通过req.query.instrument
这与将变量传递给函数时类似。只是因为当你将变量作为参数传递时,变量被命名为某个东西并不意味着该函数将使用相同的名称!在这种情况下,reqdata作为req.query
传入答案 1 :(得分:0)
我想出了这个。 Bennett很接近,但它需要第一个值为params。这样,您就可以通过对象表示法发送一大堆查询参数。
$http.get("/api/getfile", {params : reqdata})
我最终也最终将te GET转换为POST。