使用API 密钥进行ExpressJS API调用

问题描述 投票:0回答:1

试图保持我的代码组织。我有一个控制器目录和路由器目录。目标是进行api调用并检索数据。

CONTROLLER

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文件中要求它。在POSTMAN中,这很好用;我确实在Postman中对我的API密钥进行了硬编码。我尝试了很多不同的方法,但在代码中发出初始请求时似乎无法用我的ApiKey传递标题。另外,作为nodejs的新用户,我不确定在这种情况下请求重定向是否足够。最终,setHeader无法正常工作

node.js api express header
1个回答
0
投票

听起来你正试图对另一个服务进行异步调用,撤回一些数据,然后将其发送回调用你服务的客户端。在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发出请求,然后我们等待“promise”(这是一个异步的javascript概念,如果你以前没遇到它),那么我们采取从那里回应并将其作为res转发回来。让我们假装这是一个JSON响应,但它可能是任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.