从 stackexchange 导入 json 文件并使用 node js (express) 打印
Importing json file from stackexchange and print using node js (express)
我正在尝试从 stackexchange api 请求 json 文件,当服务器加载时将其保存在客户端,以便我可以在本地 manipulate/change 它。
我尝试使用此代码,但页面一直在加载,没有任何反应。
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=Whosebug';
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,甚至不是 text:
到return到浏览器,最简单的方法是使用pipe
:
const request = require('request');
const surl = 'https://api.stackexchange.com/2.2/users/11097431?order=desc&sort=reputation&site=Whosebug';
app.use('/', (req, res) => {
request(surl).pipe(res);
});
或者,如果你想manipulate/change正文,可以使用gzip: true
选项:
const request = require('request');
const surl = 'https://api.stackexchange.com/2.2/users/11097431?order=desc&sort=reputation&site=Whosebug';
app.use('/', (req, res) => {
request({
url: surl,
gzip: true
}, function(error, response, body) {
let bodyObj = JSON.parse(body);
// change bodyObj...
res.json(bodyObj);
});
});
我正在尝试从 stackexchange api 请求 json 文件,当服务器加载时将其保存在客户端,以便我可以在本地 manipulate/change 它。
我尝试使用此代码,但页面一直在加载,没有任何反应。
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=Whosebug';
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,甚至不是 text:
到return到浏览器,最简单的方法是使用pipe
:
const request = require('request');
const surl = 'https://api.stackexchange.com/2.2/users/11097431?order=desc&sort=reputation&site=Whosebug';
app.use('/', (req, res) => {
request(surl).pipe(res);
});
或者,如果你想manipulate/change正文,可以使用gzip: true
选项:
const request = require('request');
const surl = 'https://api.stackexchange.com/2.2/users/11097431?order=desc&sort=reputation&site=Whosebug';
app.use('/', (req, res) => {
request({
url: surl,
gzip: true
}, function(error, response, body) {
let bodyObj = JSON.parse(body);
// change bodyObj...
res.json(bodyObj);
});
});