В настоящее время я пытаюсь сделать запрос CURL с помощью узла.Преобразование PHP CURL в NPM CURL
У меня есть следующий запрос CURL в PHP: -
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.website.com');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: token XXX',
'Content-Type: application/json'
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
Мне нужно запустить этот же запрос CURL в узле. Я попытался выполнить множество различных пакетов NPM и установил на curljs.
У меня есть следующий код: -
var curl = require("curljs");
var curlOpts = curl.opts.connect_timeout(10);
curl("https://www.website.com -H Authorization: token XXX -H Content-Type: application/json --get", curlOpts, function(err, data, stderr) {
console.log(err);
console.log(data);
console.log(stderr);
});
Я могу получить ответ от сервера без каких-либо ошибок, но не возвращает никаких данных. я получаю следующий ответ: -
null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
ли кто-нибудь сможет помочь с нажимом в правильном направлении?
Любая помощь была бы принята с благодарностью.
На другой ноте: -
Я также попытался использовать request
Вот мой код: -
var request = require('request');
var options = {
url: 'https://www.website.com',
headers: {
'Authorization': 'token XXX',
'Content-Type': 'application/json'
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
console.log(info);
} else {
console.log(body);
}
}
request.get(options, callback);
Но он держит возвращается ошибка.
Использование node-fetch также возвращает ту же ошибку: -
fetch("https://www.website.com", {
method: "GET",
headers: {
Authorization: "token XXX",
"Content-Type": "application/json"
}
}).then(function(response) {
return response;
}).then(function(response) {
console.log(response);
});
PHP-версия работает отлично, я не настраиваю заголовки правильно?
Я перешел с PHP на узел. Одна из лучших вещей в Node - это возможность делать HTTP-запросы. Вам нужно использовать CURL? Я подозреваю, что ваша задача будет лучше выполнена с помощью библиотеки типа RequestJS. Я никогда не хочу curl_setopt снова :) –
Я пытаюсь вернуть JSON из запроса API. Можете ли вы предоставить пример с помощью RequestJS? Я не настроен на использование curljs, просто показалось лучшим из пакетов, которые я мог найти. –
Есть много способов получить JSON. Мой любимый выбор. Просто используйте его, как в браузере. npm install node-fetch. Затем «fetch» («http://www.website.com»). Then (res => res.json()), затем (res => // do something) '. Если вам нужны заголовки полномочий, это тоже можно сделать. RequestJS тоже может это сделать. Просто зависит от ваших предпочтений. Я использовал оба. –