node.js - 节点 - 无法获取 /api/posts
问题描述
我正在制作一个博客应用程序,用户可以在其中查看他们和其他用户撰写的帖子。但不幸的是,我无法查看这些帖子。其他一切工作正常,甚至后端 API 也在工作。但我仍然无法查看帖子提前谢谢你
动作/post.js
import api from "../utils/api";
import { setAlert } from "./alert";
import { GET_POSTS, POST_ERROR } from "./types";
//GET posts
export const getPosts = () => async (dispatch) => {
try {
const res = await api.get("/posts");
dispatch({
type: GET_POSTS,
payload: res.data,
});
} catch (error) {
dispatch({
type: POST_ERROR,
payload: {
msg: error.response.statusText,
status: error.response.status,
},
});
}
};
节点(路由)- post.js
const express = require("express");
const router = express.Router();
const { check, validationResult } = require("express-validator");
const auth = require("../../middleware/auth");
const Post = require("../../models/Post");
const User = require("../../models/User");
const checkObjectId = require("../../middleware/checkObjectId");
// @route POST api/post
// @description Create a post
// @access Private
router.post(
"/",
auth,
check("text", "Text is required").notEmpty(),
async (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
try {
const user = await User.findById(req.user.id).select("-password");
const newPost = new Post({
text: req.body.text,
name: user.name,
avatar: user.avatar,
user: req.user.id,
});
const post = await newPost.save();
res.json(post);
} catch (err) {
console.error(err.message);
res.status(500).send("Server Error");
}
}
);
// @route GET api/posts
// @description Get all posts
// @access Private
router.get("/", auth, async (req, res) => {
try {
const posts = await Post.find().sort({ date: -1 });
res.json(posts);
} catch (err) {
console.error(err.message);
res.status(500).send("Server Error");
}
});
// @route GET api/post/:id
// @description Get post by ID
// @access Private
router.get("/:id", auth, checkObjectId("id"), async (req, res) => {
try {
const post = await Post.findById(req.params.id);
if (!post) {
return res.status(404).json({ msg: "No Post found" });
}
res.json(post);
} catch (err) {
console.error(err.message);
res.status(500).send("Server Error");
}
});
module.exports = router;
服务器.js
const express = require("express");
const connectDB = require("./config/db");
const app = express();
//Database
connectDB();
//Middlware
app.use(express.json({ extended: false }));
app.get("/", (req, res) => res.send("API is Running"));
//Routes
app.use("/api/users", require("./routes/api/users"));
app.use("/api/auth", require("./routes/api/auth"));
app.use("/api/profile", require("./routes/api/profile"));
app.use("/api/post", require("./routes/api/post"));
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server started on port ${PORT}`));
解决方案
在server.js中注册的路由是/api/post
,因此在您的操作/发布中应该是/post
。这应该可以解决您的问题。
推荐阅读
- c# - 以不同方式获取用户主体时获取电子邮件地址的不同结果
- td-engine - 如何在不启动服务的情况下更改 TDengine 中数据库的缓存选项?
- apache-spark - 如何在不重启 Spark 集群的情况下增加工作节点?
- css - Bootstrap 5:禁用特定按钮、背景或 div 的渐变
- java - ArrayBlockingQueue 使用一把锁
- vue.js - docker-compose 中可配置的 keycloak 客户端密码
- biometrics - 带有预训练模型的 kaldi sre(说话人识别)
- reactjs - 用于反应时的 L.control.IconLayers 错误
- python - wtforms Integer Field 在网页上显示时是否强制换行?
- c - C编程中的悬空指针变量是什么意思?