我可以从Unix shell脚本成功执行此curl命令,并且可以在C:\ Users \ OutputFile.csv中看到输出。 NodeJS中的等效代码是什么
curl -k -v --user 'helloworld:hello_password'
--header 'Accept: application/vnd.myDMS-dms-api+json; version=1'
-X POST 'https://DMS.com:3001/download/csv'
--data header=true -o C:\Users\OutputFile.csv
我尝试使用Online curl to nodeJS转换器,它生成了以下NodeJs代码:-
var request = require('request');
var headers = {
'Accept': 'application/vnd.myDMS-dms-api+json; version=1'
};
var options = {
url: 'https://DMS.com:3001/download/csv',
method: 'POST',
headers: headers,
auth: {
'user': 'helloworld',
'pass': 'hello_password'
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
但是,当我运行此NodeJS代码时,它没有显示任何输出。另外我怎么能把这个输出到C:\ Users \ OutputFile.csv
答案 0 :(得分:2)
也许脚本终止之前没有返回响应。您希望该请求是异步的:
您可以使用request-promise
这是一个例子
var rp = require('request-promise');
function someFunction() {
let options = {
url: `someURL`,
method: 'POST',
body: {
some: 'payload'
},
json: true
};
return rp(options);
}
这将等待响应。
答案 1 :(得分:0)
使用request-promise
的API参数的简单版本:
var rp = require('request-promise');
function downloadFile() {
var options = {
uri: 'https://DMS.com:3001/download/csv',
method: 'POST',
auth: {
user: 'helloworld',
pass: 'hello_password',
sendImmediately: true
},
headers: {
Accept:'application/vnd.myDMS-dms-api+json; version=1'
},
form: {
'header': 'true'
}
};
rp(options)
.then(function (body) {
console.log('Downloaded body was %d long', repos.length);
})
.catch(function (err) {
console.log(err)
});
}
downloadFile()