【发布时间】:2020-10-12 15:38:45
【问题描述】:
我无法理解奇怪的 express.Router() 行为。 我决定整理我的路线以启用更好的 API 版本控制。 如果我保持如下更简单的结构,一切都会按预期工作:
app.js
app.use('/v1', v1);
// catch 404 and forward to error handler
app.use(function (req, res, next) {
const err = new Error('Not Found');
err.status = 404;
next(err);
});
v1.js(api版本/api索引文件)
module.exports = router;
router.post('/orders', auth.isUser, OrderController.create);
router.get('/orders', auth.isUser, OrderController.getAll);
router.get('/orders/:id', auth.isUser, OrderController.get);
router.put('/orders/:id', auth.isEmployee, OrderController.update);
但如果我将这些路由移动到单独的文件中,请导出路由器并将其导入如下:
ordersRoutes.js
const express = require('express');
const router = express.Router();
const auth = require('../middleware/auth');
const OrderController = require('../controllers/OrderController');
module.exports = router;
// routes for endpoint
// hostname/v1/orders/*
router.post( '/orders', auth.isUser, OrderController.create);
router.get( '/orders', auth.isUser, OrderController.getAll);
router.get( '/orders/:id', auth.isUser, OrderController.get);
router.put( '/orders/:id', auth.isEmployee, OrderController.update);
v1.js
const router = express.Router();
const ordersRoutes = require('./ordersRoutes');
module.exports = router;
router.use( '/orders', ordersRoutes );
我在每个订单路线上都点击了 404,这很奇怪,因为与其他文件相同的方法工作得很好(我多次比较它们......:()。我的假设是它与太多的实例有关路由器或路线的顺序,但我不能指望它。任何想法都非常感谢。提前谢谢!
【问题讨论】: