reactjs - API 未返回正确的 JSON (react/express/axios)

标签 reactjs express axios

我觉得这应该是重复的...如果是,我找不到正确的线程。

我在带有 React 前端的服务器上有一个 Express API(使用 mongoose)。 API 应向客户端返回 JSON

问题:它可以与 Postman 配合使用,但在 React 中返回错误的 JSON

我在 Postman 中发送的内容(这会生成正确的响应):

{"fileHashValue"
:
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}

服务器代码:

app.get("/userData", function(req, res) {
  const fileHashValue = req.body.fileHashValue;
  UserData = UserData.findOne(
    {
      fileHashValue
    },
    function(err, userdata) {
      res.json({
        userdata
      });
    }
  );
});

客户端代码:

componentDidMount() {
  axios
    .get(
      "http://ec2-52-53-190-3.us-west-1.compute.amazonaws.com:3000/userData",
      {
        fileHashValue:
          "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
      }
    )
    .then(res => {
      console.log(res.data);
    });
}

看起来这应该一切正常,但它的响应就像我发送了一个空白请求一样。 IE,如果我在 Postman 中发送空白请求,它会给出与在 React 中登录的相同结果。感谢任何帮助,谢谢!

最佳答案

函数 axios.get() 期望请求配置作为第二个参数(不是您的原始参数)。

您可以按如下方式设置参数:

axios.get("http://ec2-52-53-190-3.us-west-1.compute.amazonaws.com:3000/userData", {
    params: {
        fileHashValue: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
    }
})
.then(res => {
        console.log(res.data);
});

更详细的解释:https://flaviocopes.com/axios/#get-requests


正如其他答案提到的,使用 get 动词可能不符合您的需求。 Get 主要用于获取资源,并且不能包含主体。使用 post 可以防止这种情况。 Post 主要用于创建资源并且可以有正文:

axios.post("http://ec2-52-53-190-3.us-west-1.compute.amazonaws.com:3000/userData", {
    params: {
        fileHashValue: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
    }
})
.then(res => {
        console.log(res.data);
});

如果您的目标确实是简单地获取一个元素,我建议更改您的路由架构以包含您尝试在 url 中获取的 id :

axios.get("http://ec2-52-53-190-3.us-west-1.compute.amazonaws.com:3000/userData/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", {})
.then(res => {
        console.log(res.data);
});

并调整您的后端:

app.get("/userData/:id", function(req, res)

然后可以在 req.params.id 中访问该 ID

关于reactjs - API 未返回正确的 JSON (react/express/axios),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53818010/

相关文章:

javascript - React 'component' 参数缺失错误?

javascript - 将快速 js 路由转发到其他服务器

javascript - 请求失败,状态码为 403(禁止)在 axios.get

node.js - 如何在 NodeJS 中使用只有 URL 的 Sharp 调整图像大小,使用 async/await,并且没有创建本地副本?

javascript - 使用 formData 和 Axios 的 PATCH 请求的输入数据在 Laravel 上不可用

reactjs - 如何防止 Nivo 刻度轴文本(条形图)中的文本截断

javascript - 使用 recompose 和 typescript 正确输入 HigherOrderComponents

node.js - 如何在不重新启动的情况下在 Express 上重新加载一个文件?

javascript - 从事件获取文件时, typescript 对象可能为空

node.js - 类型错误 : connectDb is not a function?