Node.js 带有API键的ExpressJS API调用

Node.js 带有API键的ExpressJS API调用,node.js,api,express,header,Node.js,Api,Express,Header,试图让我的代码井然有序。我有一个控制器目录和路由器目录。目标是进行api调用并检索数据 控制器 function searchName(req, res) { res.setHeader("user-key", process.env.APIKEY) res.redirect(`https://api-endpoint.igdb.com/games/?search=${req.params.game}&fields=*`) } 路由器 router.get('/search/:ga

试图让我的代码井然有序。我有一个控制器目录和路由器目录。目标是进行api调用并检索数据

控制器

function searchName(req, res) {
res.setHeader("user-key", process.env.APIKEY)
res.redirect(`https://api-endpoint.igdb.com/games/?search=${req.params.game}&fields=*`)

 }
路由器

router.get('/search/:game', Controller.searchName)

我导出路由器,并在我的server.js文件中要求它。在《邮递员》中,这很管用;我的API密钥是用Postman硬编码的。我尝试了许多不同的方法,但在代码中发出初始请求时,似乎无法用ApiKey传递头。此外,作为nodejs的新手,我不确定在这种情况下请求重定向是否足够。最后,setHeader不起作用了

听起来像是在尝试对另一个服务进行异步调用,提取一些数据,然后将其发送回调用您的服务的客户端。在nodejs应用程序中,发出新的HTTP请求非常简单。Nodejs有一个内置的HTTP.Agent,但我建议尝试一下axios库,因为它使它变得更容易。这将导致如下结果:

const axios = require('axios');

function searchGame(req, res) {
    const requestOptions = {
        method: 'GET',
        uri: `https://api-endpoint.igdb.com/games/?search=${req.params.game}&fields=*`,
        headers: {
            "user-key": process.env.API_KEY
        }
    }

    axios.get(requestOptions)
    .then(function (response) {
        // This is the data the remote service gave back
        res.send(response.data);
    })
    .catch(function (error) {
        // The remote gave an error, lets just forward that for now
        res.send({error: error});
    });
}

在这里,我们从req对象构建一个axios请求,使用axios.get发出请求,然后等待“承诺”(这是一个异步javascript概念,如果您以前没有遇到过),然后从中获取响应并将其作为
res
转发回。为了参数起见,让我们假设这是一个JSON响应,但它可以是任何东西。

您看到了吗?谢谢你的回复!我只是读了一遍。看来重定向根本不是我想做的。我不想重定向到另一个页面,我只想进行api调用并检索数据。嗯!!您可能需要使用
isomorphic fetch