【发布时间】:2015-09-15 09:11:12
【问题描述】:
我正在为 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 中我们有一个路由器实例app.use(express.Router()) - 这个路由器实例如何与其他实例交互?从表面上看没有什么意义。
【问题讨论】:
-
Express API 文档链接:expressjs.com/api.html
-
谢谢,但这并不具有建设性。例如,express.Router 的一个问题是 app.params 似乎无法使用它。而且我所知道的并不是真正的 express.params 或 router.params。
-
根据这个scotch.io/tutorials/learn-to-use-the-new-router-in-expressjs-4 有一个 router.params 功能,但总而言之,如何在 Express 应用程序中多次甚至一次使用 express.Router() 还不是很清楚
标签: javascript node.js express