返回到在Express中进行重定向调用的文件

时间:2018-03-15 19:52:58

标签: javascript express url-redirection

目前,在我正在处理的Express应用程序内部的一个函数中,我希望在收集一些数据后进行重定向,重定向完成,返回该数据,然后从我离开的地方继续。

例如:

CMAKE_ROOT

这是常见的吗?有没有简单的方法来实现这一目标?如果需要,我可以进一步澄清。

谢谢!

1 个答案:

答案 0 :(得分:2)

将数据作为查询字符串传递。请参阅下面的示例(在本地运行并导航到localhost:4000/path0以查看效果)。

const express = require('express')
const app = express()

app.get('/path0', (req, res, next) => {
  if (!req.query.value) { // no data yet
    res.redirect('/path1?redirect=/path0') // go to another path to fetch data
  } else {
    res.write(`<h1>Value is: ${req.query.value}</h1>`)
    res.end()
  }
})

app.get('/path1', (req, res, next) => {
  let value = Math.random(10) // assume this is the data we want
  let redirectPath = req.query.redirect || '/path0'
  res.redirect(`/path0?value=${value}`) // redirect back, this time pass data as part of querystring
})

app.listen(4000)

另一种传递数据的方法是在首次重定向后通过Set-Cookie,而不是直接将数据传递到第二次重定向的查询字符串。 (应该在大多数现代浏览器中工作,即使给定302,see this