【问题标题】:How to attach a payload with GET request using axios?如何使用 axios 附加带有 GET 请求的有效负载?
【发布时间】:2021-04-17 23:55:01
【问题描述】:

我正在尝试将对象附加到节点后端的 GET 请求,但是当我从后端控制台记录 req.body 时,它显示 req.body 为空。这是我的反应代码:

 useEffect(() => {
    const fetchMessages = async () => {
      const { data } = await axios.get('/api/messages', {
        sender: '5ffadc2710d93b21a812c33b',
        receiver: '5ffadc1510d93b21a812c339',
      });
      setMessages(data.messages);
      console.log(data);
    };
    fetchMessages();
  }, []);

我将带有密钥发送者和接收者的对象附加到后端以获取发送者和接收者之间的消息。这是我的后端代码,在第 4 行,我在控制台记录 req.body,它返回一个空对象。

Router.route('/').get(
  asyncHandler(async (req, res) => {
    const { sender, receiver } = req.body;
    console.log(req.body);
    const user = await User.findOne({ _id: sender });
    const user2 = await User.findOne({ _id: receiver });
    let sentMessages = await Message.find({ sender, receiver });
    let receivedMessages = await Message.find({
      sender: receiver,
      receiver: sender,
    });
    let messages = sentMessages.concat(receivedMessages);
    messages.sort((a, b) => a.time.getTime() - b.time.getTime());
    res.status(200).json({
      sender: user,
      receiver: user2,
      messages,
    });
  })
);

【问题讨论】:

  • GET 请求不应包含有意义的负载,使用 POST

标签: node.js reactjs


【解决方案1】:

您的应用中间件中的 json 解析器怎么样?

[...] //express/node setup

app.use(express.json())

[...]//rest of configuration

【讨论】:

  • 我设置了我的 json 解析器,当我尝试使用 Postman 发送请求时,它可以工作,所以我的前端 React 文件有问题
  • 哦,我明白了。所以你用 FormData 发送文件?如果不是,请尝试使用它。 FormData info
【解决方案2】:

Axios 库是独立的,它不允许您向 GET 请求添加正文。为此使用 axios.post。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-28
  • 2023-01-10
  • 2018-04-23
  • 1970-01-01
  • 2015-09-21
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多