首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Node.js调用JSON API

使用Node.js调用JSON API
EN

Stack Overflow用户
提问于 2012-08-06 18:20:09
回答 5查看 171.2K关注 0票数 85

我正在尝试获取登录到我的应用程序的用户的facebook个人资料图片。Facebook的API指出,http://graph.facebook.com/517267866/?fields=picture以JSON对象的形式返回正确的URL。

我想从我的代码中获得图片的URL。我尝试了下面的方法,但是我遗漏了一些东西。

代码语言:javascript
复制
 var url = 'http://graph.facebook.com/517267866/?fields=picture';

 http.get(url, function(res) {
      var fbResponse = JSON.parse(res)
      console.log("Got response: " + fbResponse.picture);
    }).on('error', function(e) {
      console.log("Got error: " + e.message);
 });

运行此代码将产生以下结果:

代码语言:javascript
复制
undefined:1

^
SyntaxError: Unexpected token o
    at Object.parse (native)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-06 18:27:43

http.get()回调中的res参数不是主体,而是一个http.ClientResponse对象。你需要组装车身:

代码语言:javascript
复制
var url = 'http://graph.facebook.com/517267866/?fields=picture';

http.get(url, function(res){
    var body = '';

    res.on('data', function(chunk){
        body += chunk;
    });

    res.on('end', function(){
        var fbResponse = JSON.parse(body);
        console.log("Got a response: ", fbResponse.picture);
    });
}).on('error', function(e){
      console.log("Got an error: ", e);
});
票数 156
EN

Stack Overflow用户

发布于 2015-08-31 08:47:30

我认为对于像这样的简单的超文本传输协议请求,最好使用request module。你需要用npm (npm install request)安装它,然后你的代码会是这样的:

代码语言:javascript
复制
const request = require('request')
     ,url = 'http://graph.facebook.com/517267866/?fields=picture'

request(url, (error, response, body)=> {
  if (!error && response.statusCode === 200) {
    const fbResponse = JSON.parse(body)
    console.log("Got a response: ", fbResponse.picture)
  } else {
    console.log("Got an error: ", error, ", status code: ", response.statusCode)
  }
})
票数 19
EN

Stack Overflow用户

发布于 2018-01-01 00:44:01

我使用的get-json使用起来非常简单:

代码语言:javascript
复制
$ npm install get-json --save

导入get-json

代码语言:javascript
复制
var getJSON = require('get-json')

要执行GET请求,您需要执行以下操作:

代码语言:javascript
复制
getJSON('http://api.listenparadise.org', function(error, response){
    console.log(response);
})
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11826384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档