reactjs - API 未返回正确的 JSON (react/express/axios)
问题描述
我觉得这应该是重复的......如果是我没有找到正确的线程。
我在带有前端的服务器上有一个Express API
(使用)。API 应该返回一个给客户端。mongoose
React
JSON
问题:它工作正常,但Postman
返回错误JSON
React
我发送的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 主要用于创建资源并且可以有一个 body :
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
推荐阅读
- r - as.numeric(bbox) 中的错误:无法将类型“S4”强制转换为“double”类型的向量
- r - 使用季度结束日期 (R) 填充数据框列
- javascript - 将 JavaScript 鼠标事件从一个元素传播到另一个元素?
- spring-boot - 在spring boot中上传网络连接速度慢的文件时出错
- swift - 手动解决 Swift 包依赖项
- swift - 在 NSScrollView 中更改 NSView 的框架最终会产生奇怪的值
- qt5 - 为什么 Qt5 在使用信号时会警告有关 miisng 信号?
- javascript - Qlik 如何导入依赖于其他以太的 JS 库
- android - 是否有任何 Android 通知 setContentTitle 和 setContextText 魔法值?
- java - 如何使用具有使用 java 流的属性的不同对象的列表来创建不同对象的列表