这个curl命令的nodejs代码是什么

时间:2019-04-09 17:55:41

标签: node.js curl

我可以从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

2 个答案:

答案 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()