【发布时间】:2021-10-02 12:48:33
【问题描述】:
我正在尝试使用 axios 在 React 中进行以下调用:
axios.get(`http://localhost:5000/daily_batches/num_tweets_by_tag_and_date/`, {
params: {
tag: "Green/Sustainable Energy",
date: "2021-05-07"
}
})
.then(res => {
console.log(res)
})
我应该在我的快速路由中使用 req.params、req.body 或 req.query 以使 axios 调用成功吗?如果我使用 req.params,像这样:
router.route('/num_tweets_by_tag_and_date/').get(async (req, res) => {
try {
const tag = req.params.tag;
const date = req.params.date;
const tag_num_tweets_field = "tags." + tag + ".num_tweets"
const num_tweets_data = await DailyBatch.findOne({"date": date}, {[tag_num_tweets_field]: 1, "_id": 0});
res.json(num_tweets_data)
} catch (err) {
console.log(err)
res.status(400).json({
errors: {
global: "An error occurred."
}
})
}
});
我得到一个“data:null”,如屏幕截图所示。事实上,通过在路线中执行 console.log(req.params.tag) 和 console.log(req.params.date) 我得到“未定义”
如果我使用 req.body.tag 和 req.body.date 而不是 req.params.tag 和 req.params.date,我仍然会得到“未定义” " 当我使用 console.log(date) 和 console.log(tag) 时。并且 api 响应仍然是“data:null”。然而,在 Insomnia 中,api 调用工作正常并返回预期的数据,如下图所示:
如果我使用 req.query.date 和 req.query.tag,我在 React 中进行的 axios api 调用中成功获取了数据。但是,调用在 Insomnia 中不起作用,我得到“null”。
我似乎无法找到一种方法来使用 axios 在 React 中进行 get 调用并传递带有调用参数的字典,同时能够在 Insomnia 中调用同一端点。我发现的唯一方法是使用 req.param("tag") 和 req.param("date") 但显然它已被弃用,所以我不想使用它。
我已经阅读了多篇关于 req.params、req.body 和 req.query 的帖子,但我阅读的越多,我就越感到困惑。任何帮助将不胜感激!
【问题讨论】:
标签: reactjs api express axios request