javascript - 在使用邮递员测试基本的 Nodejs CRUD API 时,它给出了错误“无法发布”。如何解决这个问题?
问题描述
我创建了一个基本的 Nodejs CRUD 和身份验证 API。在使用 Postman 测试新订单的基本创建操作时,它会返回404
带有响应正文“无法发布”的状态代码。
错误:
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /order/addorder</pre>
</body>
</html>
API 逻辑似乎对我和路由器都是正确的。
module.exports.add_order = auth, async (req, res) => {
try {
const { productName, quantity } = req.body;
if (!productName || !quantity)
return res.status(400).json({ msg: "Not all fields have been entered" });
const existingorder = await Order.findOne({ productName });
if (existingorder)
return res.status(400).json({ msg: "A product with this name already exists" });
const newOrder = await new Order({
productName,
quantity,
userId: auth.user,
timestamp
});
const savedOrder = await newOrder.save();
res.json(savedOrder);
} catch (err) {
res.status(500).json({ error: err.message });
}
}
该auth
函数是一个验证 JWT 的中间件函数。
路由器:
orderrouter.get('/readorder', ordercontroller.read_order);
orderrouter.post('/addorder', ordercontroller.add_order);
orderrouter.put('/updateorder', ordercontroller.update_order);
orderrouter.delete('/deleteorder', ordercontroller.delete_order);
module.exports = orderrouter;
解决方案
该错误表明您正在访问/order/addorder但在您的路由器中您只有/addorder。
确保您的组路由具有/order前缀
推荐阅读
- bash - 无法识别的选项“地图 0:a?”
- docker - ListenAndServeTLS 在本地运行 - x509: 证书由 docker 中的未知权威签署
- html - 如何在不更改标题高度的情况下将按钮添加到 SB Admin 2 Card 标题?
- html - 为什么 CSS - Flexbox “end” 和 “start” 属性在 Chrome 中不起作用,但在 Firefox 中起作用?
- python - 条目小部件中的清除文本不起作用
- spring-boot - Spring Boot jar 文件,不读取配置文件夹中的 application.properties
- c# - MassTransit 在关闭时尝试无限连接到 RabbitMQ
- r - 如何根据季度数据检索“寓言”“ETS”模型的组件?
- javascript - 输入值是文本不变
- c - C - 2 个数组的平均值 - 始终为 0