【发布时间】:2021-09-27 19:52:07
【问题描述】:
我编写了一个非常简单的 Express 应用程序,它使用 Axios 从 API 获取数据。
我使用 Google Chrome 进行了测试,并且能够成功获取 API 数据。但是检查控制台日志,似乎来自 Axios 的 GET 请求运行了 2 次。 1次成功,1次失败。
我不确定这是否按预期工作,或者我做错了什么。任何帮助将不胜感激。
代码如下
const app = express()
app.get('/:id' , (req, res)=>{
const fullURL = url + req.params.id
axios.get( fullURL , {
params: {
apikey: apikey,
limit: 10
}
}).then((response)=>{
console.log('Success')
res.send(response.data)
}).catch((error)=>{
console.log('Error')
})
})
app.listen(PORT, ()=>{
console.log(`App is running on port ${PORT}`);
})
以下是我的控制台日志结果
成功
错误
【问题讨论】:
-
我认为 .then 无论请求成功还是失败都会发生。这意味着请求只发生了一次,但失败了。
-
您的代码没有问题,您确定您没有发送 2 个请求吗?
-
“res.send(response.data)”可能会产生一个错误,然后 .catch 会捕获该错误。您是否尝试过注释掉该行?
-
在 .catch(或至少 error.message)中记录实际错误会很有帮助。这可能会更深入地了解正在发生的事情。
-
根据建议,我刚刚也用 POSTMAN 进行了测试,只有 1 个请求出现。我猜是用谷歌浏览器测试是导致问题的原因。