打开http / 2连接并发布表单数据

时间:2017-05-01 11:45:48

标签: node.js forms http amazon

目的

此代码的目标是通过http2连接到API服务,然后维护该连接,以便我可以将多部分表单数据POST到API:

let options = {
    port: 443,
    hostname: 'avs-alexa-na.amazon.com',
    path: '/v20160207/directives',
    method: 'GET',
    headers: {
      'Authorization': 'Bearer ' + JSON.parse(localStorage.getItem('CREDS')).access_token,
    }
  }
  var request = require('http2').request(options)
  request.on('response', function(response) {
    console.log(response)
    if (response.statusCode == 403) {
       //handle invalid token
    } else {
      //now lets make a POST request with form-data
    }
    //response.on('end', finish);
  });

问题

我查看了HTTP模块文档,并且看到了一些用例,当您将请求与变量关联时,您可以使用request.write()发送数据,但我并不完全确定它是正确的发送表单数据的方法。然后我用这个例子查看了form-data模块:

var request = http.request({
  method: 'post',
  host: 'example.org',
  path: '/upload',
  headers: form.getHeaders()
});

form.pipe(request);

request.on('response', function(res) {
  console.log(res.statusCode);
});

但是在这种情况下,我想发送表单数据 AFTER 我已经建立了与API服务的连接,并且在同一个连接上,正如API Docs所说

  

"建立下行通道流后,您的客户必须   用AVS同步它的组件状态。这需要制作一个   POST请求/ {{API version}} /事件上的新事件流   现有连接(注意:不要打开新连接)。这个事件   当客户端收到响应时,应关闭流   (指示)。以下是SynchronizeState事件的示例:"

那么如果我要使用POST方法为另一个路径创建另一个http2请求的另一个变量,那么是不是要创建一个新连接?

我已成功向该服务的API端点发出GET请求,现在它是将表单数据(多部分,如果有所不同)发布到不同路径的问题现有的连接。

任何帮助将不胜感激!

0 个答案:

没有答案