Имейте в виду архитектуру промежуточного слоя: Каждый обработчик может манипулировать контекстом, а также ответить - или - вызов next()
.
С помощью этого предположения экспресс-маршрутизатор в основном представляет собой функцию промежуточного программного обеспечения, которую вы можете использовать после «исправления» URL-адреса.
(кстати, приложение запрос является также функцией, хотя я не уверен, если я рекомендую идти назад, чтобы в начале цепи)
Вот kind'a пример:
const router = new require('express').Router()
const user = require('../model/user')
//assume user implements:
// user.byId(id) -> Promise<user>
// user.byMail(email) -> Promise<user>
const reqUser = userPromise => (req, res, next) =>
req.user
? next()
: userPromise(req)
.then(user => { req.user = user })
.then(next, next)
//assume the sever that uses this router has a
//standard (err, req, res, next) handler in the end of the chain...
const byId = reqUser(req => user.byId(req.params.id))
const byMail = reqUser(req => user.byMail(req.params.mail))
router.post('/by-id/:id/friends',
byId,
(req, res) => res.render('user-friends', req.user)
)
router.post('/by-email/:email/friends',
byMail,
(req, res, next) => {
req.url = `/by-id/${req.user.id}/friends`
next()
},
router
)
I я немного смущен термином «страница», вы смотрите на перенаправление с 1 конечной точки на другую? Пример '/' {GET} запроса '/ test' {POST} –
извините за путаницу. я имею в виду перенаправление с «localhost: 3000 /» на «localhost: 3000/test» – neolicd