【发布时间】:2020-12-25 15:44:19
【问题描述】:
希望大家能帮我解开这个谜。我为我的 API 创建了一个端点:
apiRouter.get("/username", async (req, res) => {
const { username } = req.body;
try {
const user = await getUserByUsername(username);
res.send({ message: "This is your user", user });
console.log("this is user", user);
} catch (error) {
throw error;
}
});
这是一个 GET 路由,当用户与此 url 路径交互时,应该以这种方式发回消息和用户对象:
http://localhost:3000/api/users/username
当我通过 Postman 访问端点时,我会同时取回消息和用户对象。看起来像这样的东西:
{
"message": "This is your user",
"user": {
"customer_id": 5,
"first_name": "Jessica",
"last_name": "Blue",
"email": "baker@space.com",
"username": "jess1",
"password": "1234",
"address_1": "123 pretty lane",
"address_2": "Apt 31",
"city": "Riverside",
"state": "California"
}
}
但是,当我通过前端访问路由时,消息会返回,但用户不会返回。我正在使用以下方法调用服务器:
export async function getUserByUsername(username) {
try {
const { data } = await axios.get("/api/users/username", {
username,
});
console.log(data);
return data;
} catch (error) {
throw error;
}
}
我真的不确定为什么用户没有收到回复。该路线有效,我只是没有得到预期的回应。我花了几个小时试图找到一个没有运气的修复方法。任何帮助将不胜感激。enter image description here
【问题讨论】:
-
试试
res.send( { message: "This is your user", user: { ...user } } ); -
postman 和 chrome devtool 都可以将您的请求转换为 curl 命令。你可以比较一下,看看到底有什么不同。
-
将
req.body更改为req.query -
您要发送带有 GET 的正文吗?我很确定您的 axios 请求必须是 POST。
-
这能回答你的问题吗? body data not sent in axios request
标签: javascript express axios