【问题标题】:Neither Node.js PUT or POST routes are presenting the data that is being receivedNode.js PUT 或 POST 路由都没有呈现正在接收的数据
【发布时间】:2017-04-01 22:13:50
【问题描述】:

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

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

此问题不是向 API 发送数据的问题之一。它必须在接收 API 中出现问题,因为某种原因没有放弃它正在接收的数据。

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

这是我发送的方式。我什至可以在接收 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 都显示了正确的主体对象。 但在这个问题中,req 中没有 body 对象。 并将这个 put/post 发送到 http://httpbin.org 我可以看到 body 对象正在发送。

有什么想法吗?

【问题讨论】:

  • 可能是因为 try 是保留字。使用其他变量名
  • @Incognito 没有。对不起。我改变了,因为你问。还是同样的问题。
  • 您必须更改它,因为它会产生编译错误
  • 没有。没有编译或运行时错误
  • 你能试着缩小你的问题范围并更准确吗?

标签: javascript node.js express


【解决方案1】:

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

由于我不会进入的原因,我必须将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) 中的值返回到 PUTting API 的方法中。 有什么提示吗?赞赏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-20
    • 2018-04-15
    • 2014-10-18
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    相关资源
    最近更新 更多