Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP CURL转换为NPM CURL_Php_Node.js_Curl_Npm_Curljs - Fatal编程技术网

将PHP CURL转换为NPM CURL

将PHP CURL转换为NPM CURL,php,node.js,curl,npm,curljs,Php,Node.js,Curl,Npm,Curljs,我目前正在尝试使用node发出CURL请求 我在PHP中有以下CURL请求:- $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

我目前正在尝试使用node发出CURL请求

我在PHP中有以下CURL请求:-

$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软件包,并最终确定了

我有以下代码:-

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
有谁能帮助我们朝着正确的方向前进

任何帮助都将不胜感激

另一方面:-

我也尝试过使用

这是我的密码:-

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);
但它不断返回一个错误

使用还会返回相同的错误:-

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版本工作得很好,我没有正确配置头吗?

HTTP请求被烘焙到Node.js中。
http
https
模块是一些核心模块:它们的安装不需要您做任何其他事情

然而,它们并非完全易于使用。它们本身并不复杂,但可以更简单

我心目中最好的实现是
fetch
API。这包括在现代web浏览器中()。您还可以通过安装以下组件在节点中使用它:

然后,您可以使用
fetch
功能拨打电话。您可以通过使用
Promise
s,以一种很好的现代ES6标准的方式获得结果

就你而言:

fetch("http://www.website.com", {
  method: "GET", // not strictly necessary
  headers: {
    Authorization: "token XXX",
    "Content-Type": "application/json" // is this accurate?!
  }
}).then(function(response) {
  return response.json(); // we want JSON output
}).then(function(response) {
  console.log(response); // logs the server response
});

如果您愿意使用现代箭头功能,您可以使其更加美观。

更新

我认为你可以简单地使用

您的场景中的示例:

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) {
        console.log(response);
        console.log(body);
    }
}

request(options, callback);
该模块使用简单,具有直观的解决方案和示例。我们在整个节点项目中使用它已经有一段时间了,到目前为止还没有遇到任何问题


希望这对您有所帮助。

我已经从PHP迁移到Node。节点最好的地方之一是它能够发出HTTP请求。你需要用卷发吗?我怀疑使用RequestJS这样的库会更好地完成您的任务。我再也不想使用curl_setopt:)我正在尝试从API请求返回JSON。您能提供一个使用RequestJS的示例吗?我并没有打算使用curljs,只是觉得这是我能找到的最好的软件包。我最喜欢的是fetch。只需像在浏览器上一样使用它。npm安装节点获取。然后
fetch('http://www.website.com)。然后(res=>res.json())。然后(res=>//做点什么)
。如果您需要授权头,也可以这样做。RequestJS也可以做到这一点。这取决于你的喜好。我两个都用过,我没有用curljs,但我使用了一个名为curlrequest的npm模块,它实际上产生了一个新的进程来执行curl请求。我们非常快地执行了1000个请求,这确实提高了CPU/内存的利用率。切换到使用内置HTTP模块解决了这个问题,因此我强烈建议在服务器上使用HTTP模块curl@MattAltepeter我该怎么做呢?我还能传递授权令牌吗?这仍然返回一个404,它;It’奇怪的是,我的脚本的PHP版本是如何从API中提取内容的,但无论我用node做了什么尝试,我都会得到一个404。@TonyHensler一些API,比如一个漂亮的
用户代理集:你可以试试。但是,当您不知道资源是什么时,对其进行编码是非常困难的!我尝试将用户代理放入其中,但它仍然返回相同的结果。它如何在PHP中完美地工作是非常令人沮丧的,但我无法使用node获得响应。虽然看起来不是这样,但指向工具或库的链接应该包括链接资源如何适用于问题的具体说明,理想情况下是这样的。“非常简单易用”是一个极其简单的建议。
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) {
        console.log(response);
        console.log(body);
    }
}

request(options, callback);