假设我想让 REST 端点看起来大致如下:
/user/
/user/user_id
/user/user_id/items/
/user/user_id/items/item_id
如果有意义的话,对每一个进行 CRUD。例如,/user POST 创建一个新用户,GET 获取所有用户。/user/User _ id GET 只获取该用户。
项目是用户特定的,所以我把它们放在 User _ id下面,这是一个特定的用户。
现在为了使 Express 路由模块化,我做了一些路由器实例。有一个用户路由器和一个项目路由器。
var userRouter = require('express').Router();
userRouter.route('/')
.get(function() {})
.post(function() {})
userRouter.route('/:user_id')
.get(function() {})
var itemRouter = require('express').Router();
itemRouter.route('/')
.get(function() {})
.post(function() {})
itemRouter.route('/:item_id')
.get(function() {})
app.use('/users', userRouter);
// Now how to add the next router?
// app.use('/users/', itemRouter);
到 item
的 URL 是 user
的 URL 层次结构的后代。现在,我如何使用 /users
将 URL 传递给 userRouter,但是使用更具体的 /user/*user_id*/items/
路由器传递给 itemRouter 呢?另外,如果可能的话,我希望 itemRouter 也可以访问 user _ id。