node api没有收到json数据

时间:2016-05-24 00:04:50

标签: angularjs node.js

我使用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)

})

2 个答案:

答案 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。