【问题标题】:Get body of GET request (NodeJS + axios)获取 GET 请求的主体(NodeJS + axios)
【发布时间】:2020-01-13 02:53:49
【问题描述】:

这是我的要求:

        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)
        })

    })

确实,两个 sn-ps 中唯一值得关注的行是第一行和前两行(分别用于第一个和第二个 sn-p)。

请求通过,但我的 console.log 显示:

req.body = {}

我在这里做错了什么?

【问题讨论】:

  • 为什么在使用 GET 请求时不使用req.query

标签: javascript node.js reactjs express axios


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    通常在 GET 方法中我们不传递正文数据。您可以传入查询字符串而不是正文数据。而且,如果您使用的是快递服务器,那么您需要安装一个包body-parser 来获取正文中的数据。请参考axios中发布的问题

    【讨论】:

      猜你喜欢
      • 2018-07-07
      • 2019-07-27
      • 2021-03-27
      • 2020-02-14
      • 1970-01-01
      • 2021-05-03
      • 2018-03-01
      • 1970-01-01
      • 2022-09-27
      相关资源
      最近更新 更多