我正在使用Node.js的Express 4服务器。
在Express中,已经内置了一个路由器,如下所示:
在app.js文件中
var router = express.Router();
app.use(router);
app.use('/users', usersRoutes);
在 userRoutes.js 文件中:var router = express.Router();
router.get('/', function (req, res, next) {
}
router.get('/:user_id', function (req, res, next) {
}
router.post('/:user_id', function (req, res, next) {
}
router.put('/:user_id', function (req, res, next) {
}
router.delete('/:user_id', function (req, res, next) {
}
module.exports = router;
但我发现在线上很难找到任何关于这种类型路由器的实质性文档。对于旧的方式使用app.get,app.post,app.put,app.delete等有更多的文档。其中更加困惑的一点是,第一个参数(路由路径)似乎要求我们作为程序员从router.get/post/put/delete方法中去除app.use参数。例如:
app.use('/users', usersRoutes);
这意味着usersRoutes中所有路由的路径都已经在开头有一个不可见的'/users'
,这是我还不确定是否喜欢的东西。
这意味着在usersRoutes.js中:
var router = express.Router();
router.get('/users/:user_id', function (req, res, next) { //WRONG!!
}
router.get('/:user_id', function (req, res, next) { //RIGHT
}
这有点令人困惑,但也许在更长的路径上我会欣赏它。
考虑到这个 express.Router 缺乏文档 - 我认为这不是首选方法 - 但是可以用 express.Router 创建一个稳健的 RESTful 后端吗?并且它是否具备所有基本的 HTTP 动词?
另一件令人困惑的事情是 ----> 在 app.js 中,我们有一个router实例 app.use(express.Router())
,这个router实例如何与其他实例交互?一开始意义不大。