我的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
我做错什么了吗?
答案 0 :(得分:0)
因为应为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"))
})