javascript - 使用nodeJS返回Json

标签 javascript angularjs json node.js

我尝试使用此处提供的 Clash of clan API 来学习 NodeJS 和 AngularJS https://developer.clashofclans.com/#/

我的 JSON api 的返回被 chop ,我不知道如何获得完整的响应。

这是我用node和express编写的app.js:

var   express       = require('express')
, https         = require('https')
, bodyParser    = require('body-parser')
, request       = require('request')
, app           = express()
, http_port     = 3000;

app.use(express.static(__dirname + '/public'));
app.use(bodyParser());

var options = {
    host: 'api.clashofclans.com',
    port: 443,
    path: '/v1/clans/' + encodeURIComponent("#PP8JC9RQ"),
    headers : {
    accept : "application/json",
    authorization : "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiIsImtpZCI6IjI4YTMxOGY3LTAwMDAtYTFlYi03ZmExLTJjNzQzM2M2Y2NhNSJ9.eyJpc3MiOiJzdXBlcmNlbGwiLCJhdWQiOiJzdXBlcmNlbGw6Z2FtZWFwaSIsImp0aSI6ImQ4Njg1OGFhLWQzZTUtNDNiOC05MTM1LTBjNzI1ZjI4OGFiMiIsImlhdCI6MTQ1NjMwMTE5MSwic3ViIjoiZGV2ZWxvcGVyLzk1YWM0YjdmLTY5NTQtMDE3MC01ZjAyLTcxNjY1ZDMzYjUwNyIsInNjb3BlcyI6WyJjbGFzaCJdLCJsaW1pdHMiOlt7InRpZXIiOiJkZXZlbG9wZXIvc2lsdmVyIiwidHlwZSI6InRocm90dGxpbmcifSx7ImNpZHJzIjpbIjg3LjIzMS4yMTMuMTU0Il0sInR5cGUiOiJjbGllbnQifV19.SYqeSAF-0_bM1eS2-hnovvj5j-I0SQpdr_kySIiBKw9OkrNuBzZAOAOkiH3fzdKSkcHaJfXzWdXr8JozFfAmJA"
},
method: 'GET'
};

//  Route par défaut
    app.get("/members", function(req, res) {
    console.log("-------------------------------------\n\nroot path !! Let's get clan infos from coc api\n\n-------------------------------------");
    var req = https.request(options, function(response){

        response.on('data', function (chunk) {          
            console.log('BODY: ' + chunk);
            //    in console JSON is full but in my html JSON is truncated..
            res.send(chunk);
        });         
    });

    req.on('error', function(e) {
        console.log('problem with request: ' + e.message);
    });

    req.end();

    });


app.listen(http_port,function(){
    console.log("Listening on " + http_port);
});

如果有人可以教一个 Angular 落:)

最佳答案

您的代码正在将响应的第一 block 立即发送回用户。您需要等待整个 HTTP 响应完成。尝试这样的事情:

app.get("/members", function(req, res) {
    var req = https.request(options, function(response){
    var httpResult = '';
    response.on('data', function (chunk) {          
        console.log('BODY: ' + chunk);
        httpResult += chunk;
    });         
    response.on('end', function() {
       res.send(httpResult);
    });
});

req.on('error', function(e) {
    console.log('problem with request: ' + e.message);
});

req.end();

});

看看我如何在每次调用数据事件时以及完成时附加到 var - 然后我发送输出。

关于javascript - 使用nodeJS返回Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35601058/

相关文章:

javascript - 在所有页面中维护 session 信息不起作用

angularjs - 具有Angular的Bootstrap 3工具提示

php - codeigniter 数据表将变量发送到数据表查询

javascript - MapboxGL 根据从文件加载的数据的属性设置可见性

javascript - 在javascript中使用枚举实现对象的正确方法

javascript - 临时解压缩文件以在浏览器中查看内容

javascript - window.open 在 phonegap

angularjs - 如何使用 ngModel 编译指令中的元素?

php - 在 JSON 的响应对象上调用 Ajax

json - 在 mule 中跳过 json 中的 null