我正在尝试发出请求,并使用我收到的数据将其传递给另一个请求,将该数据附加到 URL。
我试图在路由下面创建一个函数,然后在路由内部调用该函数,但这不起作用..
const express = require('express');
const router = express.Router();
const fetch = require('node-fetch');
let accId;
router.get('/:platform/:name', async (req, res) => {
try {
const headers = {
'X-Riot-Token': process.env.TRACKER_API_KEY
}
const { platform, name } = req.params;
const response = await fetch(`https://euw1.api.riotgames.com/lol/summoner/v4/summoners/by-name/${name}`, {
headers
});
const data = await response.json();
if(data.errors && data.errors.length > 0) {
return res.status(404).json({
message: 'No summoner found'
})
}
res.json(data);
accId = data.accountId;
} catch (error) {
console.error(error);
res.status(500).json({
message: 'Server Error'
})
}
});
module.exports = router;
在您看到变量 accId 的地方,我想将其添加到 URL 中,然后发出另一个请求。任何指针都会很棒,谢谢..
您无法发送第二个请求,因为您之前使用res.json(data)
.
我会通过将数据传递到另一个端点来解决这个问题。将您的数据添加到req.locals
req.locals.data = data;
然后重定向到你的另一个端点,在那里你处理你的第二个请求:
res.redirect(/other/endpoint);
在您的另一个端点中,您可以在处理 accountId 案例后将两个结果一起发送。
app.get(/other/endpoint, (req, res) => {
res.send({ data: req.locals.data, accIdResult: doSomething(req.locals.data. accountId)});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句