Вызов API ExpressJS с ключом API - PullRequest
0 голосов
/ 03 сентября 2018

Пытаться сохранить мой код организованным. У меня есть каталог controller и каталог router . Цель состоит в том, чтобы сделать вызов 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 это работает нормально; У меня действительно есть ключ API, жестко запрограммированный в Postman. Я пробовал много разных методов, но не могу передать заголовок с моим ApiKey при выполнении начального запроса в коде. Кроме того, будучи новичком в nodejs, я не уверен, достаточно ли перенаправления запросов в этом сценарии. В конечном итоге setHeader не работает

1 Ответ

0 голосов
/ 03 сентября 2018

Звучит так, как будто вы пытаетесь сделать асинхронный вызов другой службе, получить некоторые данные и отправить их обратно клиенту, который вызвал вашу службу. В приложении 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});
    });
}

Здесь мы строим запрос axios из объекта req, делаем запрос с помощью axios.get, затем ждем «обещание» (это асинхронная концепция javascript, если вы не сталкивались с ним раньше), затем мы берем ответ от этого и отправляем его обратно как res. Давайте сделаем вид, что это аргумент JSON, но это может быть что угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...