目前,在我正在处理的Express应用程序内部的一个函数中,我希望在收集一些数据后进行重定向,重定向完成,返回该数据,然后从我离开的地方继续。
例如:
CMAKE_ROOT
这是常见的吗?有没有简单的方法来实现这一目标?如果需要,我可以进一步澄清。
谢谢!
答案 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)