此代码的目标是通过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请求,现在它是将表单数据(多部分,如果有所不同)发布到不同路径的问题现有的连接。
任何帮助将不胜感激!