【问题标题】:Importing json file from stackexchange and print using node js (express)从 stackexchange 导入 json 文件并使用 node js (express) 打印
【发布时间】:2019-07-02 21:50:37
【问题描述】:

我正在尝试从 stackexchange api 请求 json 文件,并在服务器加载时将其保存在客户端,以便我可以在本地操作/更改它。

我尝试使用此代码,但页面一直在加载,没有任何反应。

const express = require('express');
const bodyParser = require('body-parser');
const request = require('request');

const app = express();

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json)

const surl = 'https://api.stackexchange.com/2.2/users/11097431?order=desc&sort=reputation&site=stackoverflow';

app.use('/', (req, res, next) => {
    request(surl, (error, response, body) => {
        // res.setHeader("Content-Type", "application/json; charset=utf-8");
        res.json(body)
        console.log('body:', body);
        console.log('body:', req.body);
    });
});

app.listen(3000, () => { console.log('On port 3000...') });

如果我在下面的代码中注释掉这两行

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json)

它给出了这种输出。

"\u001f�\b��\u0000��8z00\u0000^{4���=�c��\u0000��#c�\u0002\u0000\u0000"

如果有人能给我一个开始,那就太好了!谢谢。

【问题讨论】:

    标签: javascript node.js json express stackexchange-api


    【解决方案1】:

    输出是乱码,因为 body 是 gzip 压缩的。它不是 JSON,甚至不是文本:

    要将其返回到浏览器,最简单的方法是使用pipe

    const request = require('request');
    const surl = 'https://api.stackexchange.com/2.2/users/11097431?order=desc&sort=reputation&site=stackoverflow';
    
    app.use('/', (req, res) => {
      request(surl).pipe(res);
    });
    

    或者,如果您想操作/更改主体,可以使用gzip: true 选项:

    const request = require('request');
    const surl = 'https://api.stackexchange.com/2.2/users/11097431?order=desc&sort=reputation&site=stackoverflow';
    
    app.use('/', (req, res) => {
      request({
        url: surl,
        gzip: true
      }, function(error, response, body) {
        let bodyObj = JSON.parse(body);
        // change bodyObj...
        res.json(bodyObj);
      });
    });
    

    【讨论】:

      猜你喜欢
      • 2015-07-03
      • 1970-01-01
      • 2015-11-05
      • 2019-03-29
      • 2019-08-28
      • 2017-01-12
      • 2019-05-28
      • 2020-03-17
      • 1970-01-01
      相关资源
      最近更新 更多