我创建了一些嵌套路由,所以基本路由是 /api/v1
然后它匹配其他路由
即 /cities
或 services
现在这些路线也有他们的子路线
即
/api/v1/services
GET /
GET /services/:id
这是我为这个设置所做的
app.js
const express = require('express');
const app = express();
// load routes
require('./loader/routes')(app);
...
loader/routes.js
const router = require('express').Router();
const v1Router = require('../v1/router')(router );
module.exports = (app) => {
app.use('/api/v1', v1Router);
};
此时路由应该匹配/api/v1
v1/router/index.js
const makeServiceRoutes = require('./ServiceRouter');
module.exports = (router) => {
router.use('/items', makeItemRoutes(router, ItemController));
router.use('/cities', makeCityRoutes(router, CityController));
router.use('/services', makeServiceRoutes(router, ServiceController));
return router
}
此时路由应该匹配到 api/v1/services
现在 ServiceRouter.js 做子路由。
module.exports = (router, ServiceController) => {
router.get('/', ServiceController.getAllServices);
router.get('/:id', ServiceController.getServiceById);
return router;
};
问题是
api/v1/cities/:id
答案 0 :(得分:0)
不要挂载 router
本身。为 ServiceRouter.js
创建并挂载一个新的子路由器:
module.exports = (ServiceController) => {
const router = require('express').Router();
router.get('/', ServiceController.getAllServices);
router.get('/:id', ServiceController.getServiceById);
return router;
};