获取GET请求的正文(NodeJS + axios)

时间:2020-01-13 02:53:49

标签: javascript node.js reactjs express axios

这是我的要求:

        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 = {}

我在这里做什么错了?

2 个答案:

答案 0 :(得分:2)

某些浏览器和库不支持带有正文的HTTP get方法。您可以切换到POST / PUT并查看它是否按预期工作。

答案 1 :(得分:1)

通常,在GET方法中,我们不传递主体数据。您可以传入查询字符串来代替主体数据。而且如果您使用的是Express Server,则需要安装软件包body-parser来获取正文中的数据。请参考发布在axios

中的问题