【问题标题】:How can I pass an argument in GET method?如何在 GET 方法中传递参数?
【发布时间】:2021-08-19 16:46:48
【问题描述】:

我目前正在使用 Redux,我想发送状态并在后端请求它。代码如下。

const { email } = useSelector((state) => state.user);

  const getConcern = async () => {
    const { data } = await axios
      .get("http://localhost:5000/Student/", { email })
      .catch((err) => console.log(err.message));
    console.log(email);
    console.log(data);
  };

我正在尝试将它记录到后端的控制台中,但结果为未定义?

const getConcerns = async (req, res) => {
  const { email } = req.body;
  console.log(email);

  const concerns = await Concerns.find();

  res.status(200).json(concerns);
};

如何以当前状态发送电子邮件并将其作为 GET 方法传递到后端?请帮忙,谢谢。

【问题讨论】:

  • 在服务器上使用req.query 而不是req.body,因为您在查询字符串中发送数据,而不是在请求正文中。

标签: node.js redux react-redux


【解决方案1】:

获取请求没有可以使用的正文

await axios.get("http://localhost:5000/Student/", {
  params:{email}
})

并使用 req.query

【讨论】:

    【解决方案2】:

    我认为这里有两个问题:

    1. Axios 期望选项对象中有一个data 属性,因此您的get 方法调用应如下所示:
    await axios.get("http://localhost:5000/Student/", { data: { email } })
    
    1. 虽然Http Spec 没有明确禁止发送带有GET 请求的消息正文,但现代浏览器使用的XHRfetch API 在发送GET 请求时都会忽略消息正文。由于Axios在浏览器中使用XHR,数据会被忽略。如果您需要在请求正文中接收来自客户端的数据,您可以将服务器路由重构为 POST 请求。您也可以使用dynamic route parameterquery parameter

    【讨论】:

      【解决方案3】:

      使用 GET 时,请求不包含“body”。

      所以,你必须使用这样的东西:

      req.query
      

      查看How to get GET (query string) variables in Express.js on Node.js?

      【讨论】:

        猜你喜欢
        • 2023-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-02
        • 1970-01-01
        • 2017-03-08
        • 1970-01-01
        • 2023-03-25
        相关资源
        最近更新 更多