Express-为res.redirect()提供基本路径

时间:2019-01-29 17:08:08

标签: javascript node.js express

我不确定此问题是否可以轻松解决,但这是这种情况。假设我们有一个快递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

非常感谢

1 个答案:

答案 0 :(得分:0)

弄清楚如何使用中间件-

app.use((req, res, next) => {
  const redirector = res.redirect
  res.redirect = function (url) {
    url = '/foo' + url
    redirector.call(this, url)
  }
  next()
})