为什么Express GET请求返回HTML?

时间:2020-10-14 00:27:00

标签: reactjs express get

我的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

我做错什么了吗?

1 个答案:

答案 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"))
})