Node.js管道流与ajax和节点http模块

时间:2016-06-05 03:21:45

标签: javascript ajax node.js http express

我有一个带有一些ajax的快速应用程序,调用一些远程端点。目前,我的api调用正在发布到我本地服务器上的端点。 Express侦听这些端点并将请求传递给远程服务器并解析响应。

这适用于我的大多数端点,除了一个POST方法,它需要代码的查询参数和 Array [int] 类型的主体。每个请求对此端点的响应返回405.如果我直接在ajax请求中调用服务器端点,则返回成功。这个问题对任何人都响了吗?

以下是数据流的样子。

$.ajax({
        type: "POST",
        url: "/promos/validate?code=testing",
        data: JSON.stringify([1]),
        success: function(data) {
           console.log(data)
        }.bind(this),
        error: function(xhr, status, err) {
           console.log(status)
        }.bind(this)
    });

然后我们用快递

进行路线
router.post('/promos/validate', function(req, res) {
  pipe(req, res).post(http://remoteUrl/promos/validate/code=testing);
});

在post方法中,生成http.request函数,该函数将以下对象作为options参数

发送
{ 
protocol: 'http:',
  query: '?code=testing',
  host: 'remote-api.com',
  port: 80,
  hostname: 'remote-api.com',
  href: 'http://remote-api.com?code=testing',
  path: '/promos/validate',
  method: 'POST',
  headers: { 'Content-Type': 'application/json', 'Content-Length': 8 } 
}

最后,我们使用write将请求主体流式传输到服务器。每次发生这种情况,它都会返回405.任何想法?

1 个答案:

答案 0 :(得分:0)

两件事:将内容类型设置为application / json需要ajax请求,结果是请求命中405,因为当查询被追加到&#39时,查询被分成了自己的属性。 ;路径'财产选择。

我通过查看Node.js文档中的选项列表 - https://nodejs.org/api/http.html#http_http_request_options_callback

找到了这一点