这是我的要求:
axios.get(BASE_URI + '/birds/random', {Stuff: "STUFF"})
.then(randBird=>{
const birdData = randBird.data
const bird = {
age: birdData.age,
bio: birdData.profile.bio,
displayname: birdData.profile.displayname,
species: birdData.profile.species,
_id: birdData._id
}
this.setState({currentBird:bird})
})
这是我的路由器(在“ / birds”上)发生的事情:
birdRouter.route('/random').get((req, res)=>{
console.log('req.body = ', req.body)
User.count().exec((err, num)=>{
if(err){
console.log(err)
return res.send({error: err})
}
const random = Math.floor(Math.random() * num)
User.findOne().skip(random).exec((err, bird)=>{
if(err){
console.log(err)
return res.send({error: err})
}
console.log(bird)
res.send(bird)
})
})
实际上,两个代码段中唯一需要注意的行是前两个(分别是第一个和第二个代码段)。
请求通过,但我的console.log显示如下:
req.body = {}
我在这里做什么错了?
答案 0 :(得分:2)
某些浏览器和库不支持带有正文的HTTP get方法。您可以切换到POST / PUT并查看它是否按预期工作。
答案 1 :(得分:1)
通常,在GET方法中,我们不传递主体数据。您可以传入查询字符串来代替主体数据。而且如果您使用的是Express Server,则需要安装软件包body-parser来获取正文中的数据。请参考发布在axios
中的问题