Предположим, что я хочу иметь конечные точки REST, которые выглядят примерно так:
/user/
/user/user_id
/user/user_id/items/
/user/user_id/items/item_id
CRUD на каждом, если имеет смысл. Например, POST пользователя создает нового пользователя, GET выбирает всех пользователей. /user/user _id GET выбирает только одного пользователя.
Элементы являются специфичными для пользователя, поэтому я помещаю их под user_id, который является конкретным пользователем.
Теперь, чтобы сделать модульную экспресс-маршрутизацию, я сделал несколько экземпляров маршрутизатора. Для пользователя есть маршрутизатор и маршрутизатор для этого элемента.
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);
URL-адрес item
- это потомки иерархии URL-адреса user
. Теперь, как мне получить URL с /users
независимо от userRouter, но более конкретный маршрут /user/*user_id*/items/
в itemRouter? Кроме того, я бы хотел, чтобы user_id был доступен для itemRouter, если это возможно.