javascript - 从 stackexchange 导入 json 文件并使用 Node js (express) 进行打印

标签 javascript node.js json express stackexchange-api

我试图从 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"

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

最佳答案

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

enter image description here

要将其返回到浏览器,最简单的方法是使用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);
  });
});

关于javascript - 从 stackexchange 导入 json 文件并使用 Node js (express) 进行打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56860453/

相关文章:

javascript - 为什么它不能以这种方式显示用户点击显示在模态中的内容?

javascript - 设置 'Content-disposition' 而不设置 'Content-Length' 是否可以接受?

javascript - Nodejs require 未全局加载对象

json - 如何在 bash 脚本中的 curl 中将多行 json 字符串作为正文发布

javascript - ZF 1.9 从前端 html 重定向

javascript - 验证文本字段以限制 6 位数字

c++ - jsoncpp 查找成员函数

php - 我的广播电台网站的 JSON 代码?

javascript - 如何将链接名称存储在另一个页面上的变量中

javascript - 为什么 mongodb-native 驱动程序中有单独的 mongo.Server 和 mongo.Db?