node.js - 如何修复我的代码以使其发送 json 数据作为对邮递员 GET 请求的响应?
问题描述
我通过代码接收的数据正在输出到 cmd,console.log
但我似乎无法弄清楚如何使相同的数据可用于GET
邮递员的请求。谢谢
const express = require('express');
const app = express();
const PORT = 5000;
const apicall = require('./apicall');
const request = require('request');
app.get('/', (req, res) => {
res.send("Hello world!")
});
app.get('/getinfo', (req, res, body) => {
const getToken = (url, callback) => {
const options = {
url: process.env.GET_TOKEN,
json: true,
body: {
client_id: process.env.CLIENT_ID,
client_secret: process.env.CLIENT_SECRET,
grant_type: 'client_credentials'
}
};
request.post(options, (err, res, body) => {
if(err) {
return console.log(err)
}
console.log(`Status: ${res.statusCode}`)
console.log(body);
callback(res);
});
}
var AT = '';
var info = '';
getToken(process.env.GET_TOKEN, (res) => {
AT = res.body.access_token;
return AT;
});
const getGames = (url, accessToken, callback) => {
const gameOptions = {
url: process.env.GET_GAMES,
method: 'GET',
headers: {
'Client-ID': process.env.CLIENT_ID,
'Authorization': 'Bearer ' + accessToken
}
};
request.get(gameOptions, (err, res, body) => {
if(err) {
return console.log(err);
}
let x = '';
console.log(`Status: ${res.statusCode}`);
console.log(JSON.parse(body));
//res.send(parsed);
//req.body.getinfo = JSON.parse(body);
})
}
setTimeout(() => {
getGames(process.env.GET_GAMES, AT, (response) => {
});
}, 1000);
//res.send(JSON.parse(body));
});
app.listen(PORT, () => {
console.log(`Example app listening on port ${PORT}`);
});
解决方案
您res.send
在 a 的回调中使用request.get
。但在这种情况下,res
是来自您调用的 API的传入响应,而不是您的应用程序创建的传出响应。只有传出的响应包含一个send
方法。
要将两者分开,请使用不同的名称:
app.get("/getinfo", function(req, res) {
request.get(..., function(err, incoming_res, body) {
res.json(JSON.parse(body));
});
});
推荐阅读
- google-bigquery - 尝试获取 Apache 光束 DataFlow SideInput 时的空值
- vue.js - 如何在 Kendo UI Vue Grid (native) 中结合过滤、分组和排序
- json - -- 带有完成 URLRequest 的函数调用 - JSON
- python - 大组 x,y 坐标。找到彼此一定距离内的任何有效方法?
- python - 从句子中提取块
- google-sheets-query - 在单元格中使用“like”来引用谷歌表格中的最后四位数字
- php - 使用 PHPWord 将 DOCX 转换为 PDF 时没有样式
- css - 为什么同一设备和操作系统上的网页之间的设备像素比会发生变化?
- ios - Swift 4 - 如何将自定义 SCNGeometry 创建为多边形
- javascript - 如何在 Chrome 扩展开发中添加带有点击监听器的动态按钮?