我不确定此问题是否可以轻松解决,但这是这种情况。假设我们有一个快递app()
和一个单独的router()
。
const express = require('express')
const app = express()
const router = express.Router()
router.get('/', (req, res) => {
res.redirect('/bar')
})
app.use('/foo', router)
app.listen('8000')
说我们向http://localhost:8000/foo/
发送了一个请求。我需要res.redirect('/bar')
重定向到http://localhost:8000/foo/bar
而不是重定向到http://localhost:8000/bar
。这里唯一的关键组成部分是我们不能使用相对于当前路由的重定向,因此res.redirect('bar')
不适合我们。
我们是否有任何方法可以覆盖res.redirect()
的功能以将/foo
附加到每个重定向中?另外,我不能用res.redirect()
或类似的东西来修改每个req.originalUrl
。
非常感谢
答案 0 :(得分:0)
弄清楚如何使用中间件-
app.use((req, res, next) => {
const redirector = res.redirect
res.redirect = function (url) {
url = '/foo' + url
redirector.call(this, url)
}
next()
})