Express - указать базовый путь для res.redirect () - PullRequest
0 голосов
/ 29 января 2019

Я не уверен, что эту проблему легко исправить, но вот сценарий.Скажем, у нас есть экспресс 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 голосов
/ 29 января 2019

Разобрался, как это сделать с промежуточным ПО -

app.use((req, res, next) => {
  const redirector = res.redirect
  res.redirect = function (url) {
    url = '/foo' + url
    redirector.call(this, url)
  }
  next()
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...