首页 > 解决方案 > 如何修复我的代码以使其发送 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}`);
});

标签: node.jsexpresshttprequestpostman

解决方案


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));
  });
});

推荐阅读