首页 > 解决方案 > 在使用邮递员测试基本的 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;

标签: javascriptnode.jsexpressjwtpostman

解决方案


该错误表明您正在访问/order/addorder但在您的路由器中您只有/addorder

确保您的组路由具有/order前缀


推荐阅读