NodeJS 为什么请求正文为空{}(GET REQUEST)

2lpgd968  于 2022-12-03  发布在  Node.js
关注(0)|答案(3)|浏览(117)

这是我的前端代码

const fetchData = () => {
    const options = {
        method: 'GET',
        url: 'http://localhost:1337/user/chart',
        headers: {'x-access-token': sessionStorage.getItem('token')},
        body: [chartData.datasets]
      }
      axios.request(options).then((response) => {
        console.log(response)
        }).catch((error) => {
        console.error(error)})
}

这是后端

app.get('/user/chart', async (req, res) => {
    const token = req.headers['x-access-token']
    if (!token){
        return res.status(404).json({ success: false, msg: "Token not found" });
       }

    try {
        const decoded = jwt.verify(token, process.env.access_secret)
        const email = decoded.email
        await User.updateOne(
            { email: email },
            { $set: {} },

        )
        console.log(req.body)
        return res.status(200).json({message: 'ok', label:[]})
    } catch (error) {
        console.log(error)
        res.json({ status: 'error', error: 'invalid token' })
    }

})

当我console.log(req.body)时,它是空的{}。为什么它是空的?我正在使用GET请求来检索图表数据

abithluo

abithluo1#

Axios API不接受get get请求的主体,您可以使用params示例发送参数

const url = '/user/chart';

const config = {
  headers: {'x-access-token': sessionStorage.getItem('token')},
  params:{someKey:chartData.datasets}
};

axios.get(url, config)
mdfafbf1

mdfafbf12#

Axios不支持为get请求设置主体,请参阅文档或this related question
不过,我也建议重新考虑您的设计。通常GET请求中不使用主体。如果您要向服务器发送数据,则可能希望使用POST或PUT。如果您只想传递参数,则可能希望使用请求参数。
如果您确实需要在GET请求中发送一个主体,那么您将需要使用不同的工具。

zvokhttg

zvokhttg3#

前端//

const fetchData = () => {
const options = {
    method: 'POST',
    url: 'http://localhost:1337/user/chart',
    headers: {'x-access-token': sessionStorage.getItem('token')},
    body: {name : "xx",mail:"xx@"}
  }
  axios.request(options).then((response) => {
    console.log(response)
    }).catch((error) => {
    console.error(error)})
 }

后端//

app.post('/user/chart', async (req, res) => {
const {name , mail} = req.body
const token = req.headers['x-access-token']
if (!token){
    return res.status(404).json({ success: false, msg: "Token not found" });
   }

try {
    const decoded = jwt.verify(token, process.env.access_secret)
    const email = decoded.email
    await User.updateOne(
        { email: email },
        { $set: {} },

    )
    console.log(req.body)
    return res.status(200).json({message: 'ok', label:[]})
} catch (error) {
    console.log(error)
    res.json({ status: 'error', error: 'invalid token' })
}

})

相关问题