2016-10-24 2 views
2

Ich verwende den folgenden Code, um eine Rest-API mit Curl mit Node.JS auszuführen. Es funktioniert auf meinem lokalen Rechner.Curl mit NodeJS

... 
... 
var child_process = require('child_process'); 

    function runCmd(cmd) 
    { 
     var resp = child_process.execSync(cmd); 
     var result = resp.toString('UTF8'); 
     return result; 
    } 

    var cmd = "curl -u userx:passx -X POST --data @test.json -H 'Content-Type: application/json' https://mysite.atlassian.net/rest/api/2/issue/"; 
    var result = runCmd(cmd); 
... 
... 

Aber nach dem Server zu, erhalte ich die folgenden Fehler

/home/ubuntu/PMPBuild/jiraIssue.js:76 
       var resp = child_process.execSync(cmd); 
             ^
TypeError: Object function (command /*, options, callback */) { 
    var file, args, options, callback; 
+0

zu verwenden, welche Version von Knoten sind Sie? Ich lief dieses genaue Skript, mit der nur die URL und bekam eine Antwort – nikjohn

+0

Ich kann Ihnen zeigen, wie man 'node-curl' Bibliothek verwendet, wenn Sie nicht funktionieren, lassen Sie es mich wissen – jaggedsoft

+0

Ich benutze die Version v0 .12.10 – Jobi

Antwort

2

Ihr Server nicht ROTATION unterstützt wird. Es wird besser, wenn Sie verwenden, um eine Anfrage Bibliothek https://github.com/request/request

var request = require('request'); 
var jsonData; 

fs = require('fs') 
fs.readFile('test.json', 'utf8', function (err,data) { 
    if (err) { 
    return console.log(err); 
    } 
    jsonData = JSON.parse(data); 
}); 

request({ 
    url: 'https://mysite.atlassian.net/rest/api/2/issue/', 
    'auth': { 
    'user': 'userx', 
    'pass': 'passx', 
    'sendImmediately': false 
    }, 
    qs: jsonData, 
    method: 'POST', 
    headers: { 
     'Content-Type': 'application/json' 
    } 
}, function(error, response, body){ 
    if(error) { 
     console.log(error); 
    } else { 
     console.log(response.statusCode, body); 
    } 
}); 
+1

Ich benutze Anfrage. Es ist großartig – jaggedsoft

+1

Das OP verwendet CURL für einen POST, mit JSON-Daten mit einem Benutzernamen und einem Passwort. Ihre Antwort zeigt nicht, wie all das mit der Bibliothek 'request()' durchgeführt wird, die der operative Teil der Frage ist. – jfriend00

+0

OK Ich werde meine Antwort aktualisieren –

2

Einfaches Beispiel mit request

var request = require('request'); 
request('http://www.httpbin.org', function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     console.log(body); 
    } 
}) 

Beispiel, wie node-libcurl

var Curl = require('node-libcurl').Curl; 
var curl = new Curl(); 
curl.setOpt(Curl.option.URL, 'http://www.httpbin.org'); 
curl.setOpt(Curl.option.FOLLOWLOCATION, true); 
curl.setOpt(Curl.option.HTTPPOST, [ 
    { name: 'login', contents: 'username' } 
]); 
curl.perform();