Хорошо, я пытаюсь сделать так, чтобы запрос axios.get () извлекал определенные данные, а затем использовал этот идентификатор, чтобы получить его в виде строкового литерала, чтобы я мог выполнить второй запрос. Я продолжаю получать Информация не определена.
axios .get( `https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/bloodstrive?api_key=${api}` ) .then(response => { info = response.data.id; }) .then( axios.get( `https://na1.api.riotgames.com/lol/league/v4/entries/by-summoner/${info}?api_key=${api}` ) ) .then(response => { summoner = response.data; return summoner; }); let getSummonerId = (req, res) => { res.status(200).send(summoner); }; module.exports = { getSummonerId };
Исправьте цепочку:
axios .get( `https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/bloodstrive?api_key=${api}` ) .then(response => { return response.data.id; }) .then(info => { return axios.get( `https://na1.api.riotgames.com/lol/league/v4/entries/by-summoner/${info}?api_key=${api}` ) }) .then(response => { summoner = response.data; return summoner; });
Лично я рекомендую асинхронную работу для таких задач, как эта.Облегчает работу с обещаниями:
let fetchSummoner = async() => { const res = await axios.get(`https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/bloodstrive?api_key=${api}`); const info = res.data.id; const res2 = await axios.get(`https://na1.api.riotgames.com/lol/league/v4/entries/by-summoner/${info}?api_key=${api}`); const summoner = res2.data; return summoner; }
В текущем коде вы не добавили оператор возврата во 2-м запросе аксиоса.В противном случае это не приведет к извлечению и возврату 2-го URL.Пожалуйста, попробуйте следующий код.