Node.js PUT或POST路由都没有显示正在接收的数据

时间:2017-04-01 22:13:51

标签: javascript node.js express

我尝试了许多不同的模块和方法。 即使通过证明其他模块在Node中按预期工作,也可以通过构建单独的测试项目并单独测试每个模块来实现。

Posting FROM Node's hosted router to a remote API (not TO Node's hosted API)

此问题不是向API发送数据的问题。它必须IMO接收API中的一个问题是不要放弃它因某种原因而接收的数据。

我已经证明PUT或POST呼叫是通过将呼叫发送到http://httpbin/org来发送数据的。该网站向我显示我正在发送我希望发送的内容。

这是我发送的方式。我甚至可以在接收API中看到该API已成功调用。

- 发送 - ((再次。这显示我的node.http尝试。但我使用requestjs,requestifyjs,needlejs得到同样的问题))

router.get('/', function (req, res, next) {

    var hst = req.headers.host.split(':');
    var lookbackURL = 'https://' + req.headers.host + req.baseUrl;
    lookbackURL = 'http"httpbin.org/put';
    var dat = {
        what: 'ever'
        , try: 'again'
    };
    var bdy = JSON.stringify(dat);
    var options = {
        host: hst[0], port: hst[1], path: req.baseUrl, method: 'PUT'
        , headers: { 'Content-Type': 'application/json' }
    };

    var r = nodeHttp.request(options); r.write(bdy); r.end();
    res.sendStatus(200);

});

- 收到 -

router.put('/', function (req, res, next) {
    console.log('r', req);
});

无论我使用哪种模块或方法,在所有情况下,接收req对象都不包含whattry数据。

但在我的测试项目中,数据就像我预期的那样,在所有情况下都是如此。 在测试项目中执行相同的console.log(req);,reqestjs,requestjs,needlejs,node.http都显示正确的body对象。 但在这个问题中,req中没有身体对象。 将此put / post发送到http://httpbin.org我可以看到正在发送正文对象。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

发现问题。这是我发布的代码中没有人可以获得的东西。

由于我不会涉及的原因,我必须从body-parser取出这个申请。这也意味着app.use()不会给它一个解析器。

这意味着我必须自己处理数据。所以我添加了一个req.on('data')监听器来读取API调用中的块。

router.put('/', function (req, res, next) {
    var data = '';      
    req.on('data', function (chunk) {
        data += chunk;
        .....
    });
.....

我还决定使用Requestify作为PUT。 这只是表明变得自满并忘记事情真正起作用是多么容易;例如,body-parser(或其他事物)的假设总是在那里。或者它真正为你做了什么。

NEXT我必须弄清楚如何从`req.on('data)中获取一个值,返回到PUTIT到API的方法。任何提示?赞赏。