#javascript #node.js #curl
#javascript #node.js #curl
Вопрос:
Я использую следующий код для выполнения rest API с использованием Curl с Node.JS . Он работает на моем локальном компьютере.
...
...
var child_process = require('child_process');
function runCmd(cmd)
{
var resp = child_process.execSync(cmd);
var result = resp.toString('UTF8');
return resu<
}
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);
...
...
Но после загрузки на сервер я получаю следующую ошибку
/home/ubuntu/PMPBuild/jiraIssue.js:76
var resp = child_process.execSync(cmd);
^
TypeError: Object function (command /*, options, callback */) {
var file, args, options, callback;
Комментарии:
1. Какую версию Node вы используете? Я запустил именно этот скрипт, указав только URL-адрес и получил ответ
2. Я могу показать вам, как использовать
node-curl
библиотеку, если вы не можете заставить это работать, просто дайте мне знать3. Я использую версию v0.12.10
4. node.js версия 0.12.10 очень, очень устарела. Вы должны использовать либо 4.x, либо 6.x (предпочтительно 6.x)..
5. @NextLocal, пожалуйста, покажите мне, как использовать node-curl
Ответ №1:
Ваш сервер не поддерживает CURL. Будет лучше, если вы будете использовать библиотеку запросов 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. Я использую запрос. Это здорово
2. Операционная система использует CURL для публикации с данными JSON с именем пользователя и паролем. Ваш ответ не показывает, как сделать все это с
request()
библиотекой, которая является оперативной частью вопроса.
Ответ №2:
Простой пример с запросом
var request = require('request');
request('http://www.httpbin.org', function (error, response, body) {
if (!error amp;amp; response.statusCode == 200) {
console.log(body);
}
})
Пример использования 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();