使用nodeJS访问imgur API - 参数在AJAX中工作,但在nodeJS中不起作用

时间:2016-12-09 15:18:19

标签: ajax node.js api https imgur

努力获得nodeJS https.request或https.get以使用imgur API(也尝试使用http模块)。这是我的https.request代码:

var https = require('https')

var imgurAPIOptions = {
    hostname : 'api.imgur.com',
    path: '/3/gallery/search/time/1/?q=cat',
    headers: {'Authorization': 'Client-ID xxxxxxxxxxxx'},
    json: true,
    method: 'GET'
};

https.request(imgurAPIOptions,function(err,imgurResponse){
    if (err) {console.log('ERROR IN IMGUR API ACCESS')

} else {

    console.log('ACCESSED IMGUR API');
}

});

它返回错误消息console.log。

以下是使用jQuery AJAX的等效客户端请求的(工作)代码:

$(document).ready(function(){

  $.ajax({
      headers: {
    "Authorization": 'Client-ID xxxxxxxxxxxx'
  },
    url: 'https://api.imgur.com/3/gallery/search/time/1/?q=cat',
    success:function(data){
      console.log(data)
    }
  })

});

这里有没有人有过使imgur API工作的经验?我错过了什么?

1 个答案:

答案 0 :(得分:0)

看看https docs。你需要做一些改变:

请求回调中的第一个参数是响应,而不是错误。如果要检查错误,可以在请求中侦听error事件。

请求收到数据后,即可输出。

var https = require('https');

var options = {
  hostname: 'api.imgur.com',
  path: '/3/gallery/search/time/1/?q=cat',
  headers: {'Authorization': 'Client-ID xxxxxxxxxxxx'},
  method: 'GET'
};

var req = https.request(options, function(res) {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

  res.on('data', function(d) {
    process.stdout.write(d);
  });
});

req.on('error', function(e) {
  console.error(e);
});

req.end();