は心の中でミドルウェア・アーキテクチャを維持:各ハンドラは、コンテキストを操作して、いずれかの応答することができる - または - 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
)
「ページ」という用語で混乱していますが、1つのエンドポイントから別のエンドポイントにリダイレクトすることを検討していますか?例 '/' {GET}が '/ test' {POST}にリクエストしました –
ごめんなさい。私は、 'localhost:3000 /'から 'localhost:3000/test'にリダイレクトしていることを意味します。 – neolicd