如何解决为什么Express GET请求返回HTML?
我的API GET路由始终返回HTML时出现问题。例如,我在这里有这段代码:
exclude_if
结果返回:
router.get("/allposts",auth,async (req,res) => {
try {
const Posts = await Post.find()
.populate("postedBy","_id name")
.populate("comments.postedBy","_id name")
.sort("-createdAt");
res.json(Posts)
console.log(Posts)
} catch (err) {
res.status(500).json({error: err.message});
}
});
如果前端将代码返回为HTML,我应该如何从前端获取数据?
如果我将<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
...
</body>
</html>
更改为router.get
,则它将返回JSON响应,但是所有GET请求都将返回HTML。
这是我的app.js:
router.post
我做错什么了吗?
解决方法
因为应为POST方法的端点/ allposts不存在,并且您未处理404路由。
在您的应用中注册的所有端点之下,您可能想要添加类似这样的内容以处理404路由。
app.use((req,res,next) => {
res.status(404).json({ message: "Route not found" });
})
对于您的情况,所有的get请求都属于该中间件
app.get("*",(req,res) => {
res.sendFile(path.join(__dirname,"client/build","index.html"))
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。