从localhost node.js服务器获取外部数据

时间:2019-11-07 14:25:02

标签: node.js express

我是node.js的新手,我只想做的就是获取公共github api的数据并在运行node时将其记录下来。这是非常简单的示例:

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

var app = express();

var PORT = 5001;

request('https://api.github.com/users/someUser**', function (error, response, body) {
    console.log(error);
  if (!error && response.statusCode == 200) {
    console.log(body); 
  }
});

app.listen(PORT, function() {
    console.log('Server is running on PORT:',PORT);
});

然后,我正在运行node program.js来启动服务器。然后,我总是收到以下错误:

errno: 'ENOTFOUND',
code: 'ENOTFOUND',
syscall: 'getaddrinfo',

我在做事或设置事情上有做错什么吗?我要做的只是从本地服务器获取一些外部数据。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

这是因为需要user-agent,您可以查看以下link中的文档 因此您应该在请求的标头中传递它,因此代码应如下所示:

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

var app = express();

var PORT = 5001;

var options = { method: 'GET',
  url: 'https://api.github.com/users/someuser',
  headers:  { 'User-Agent': 'Awesome-Octocat-App', 'Content-Type': 'application/json' } };

request(options, function (error, response, body) {
    console.log(error);
    console.log(response.statusCode );
  if (!error && response.statusCode == 200) 
    console.log(body);
});


app.listen(PORT, function() {
    console.log('Server is running on PORT:',PORT);
});