Node.js 重定向到根url,在节点js的响应中传递一些数据
通过传递一些用户详细信息重定向到主url。下面的代码将重定向到根url,并通过url参数传递用户名Node.js 重定向到根url,在节点js的响应中传递一些数据,node.js,express,Node.js,Express,通过传递一些用户详细信息重定向到主url。下面的代码将重定向到根url,并通过url参数传递用户名 exports.successfull = (req,res) => { var userName = JSON.parse(req.body).username res.redirect("/?username="+ userName); } 因此,客户端上的预期url将是“John%20%Doe” 另一种方法是 res.send({ url: "/
exports.successfull = (req,res) => {
var userName = JSON.parse(req.body).username
res.redirect("/?username="+ userName);
}
因此,客户端上的预期url将是“John%20%Doe”
另一种方法是
res.send({
url: "/",
data: {
username: userName
}
})
res.send不会重定向,它将发送字符串,这意味着在客户端它将给出“/”
但是在url上不会有任何字符串参数
因此,如果没有字符串参数和使用重定向,我如何实现上述目标。如果我使用res.send,它将发送字符串,如果我使用res.redirect,我们需要附加参数
我只想重定向并传递数据,而不在url参数上显示用户名
我需要使用会话、cookie或类似的东西吗?您可能需要以不同的方式来考虑这个问题。您可以在express
应用程序
实例上调用setter,这将在应用程序
上设置一个变量,您可以稍后检索,但这将使您的web服务器有状态。如果您不知道自己在做什么,有状态的web服务器可能会有很多问题
您可以在同一POST请求中接收数据并呈现模板
app.post('/getdata', function(req, res){
res.render('/examplePage.SOMETEMPLATEENGINE', {
data: req.body.username
});
});
或者更好的是,您可以使用快速会话或cookie。Express会话可以使用中间件进行设置,也可以这样设置
const session = require('express-session');
app.use(session({
name: "my-session-name",
secret: 'my-secret',
resave: false,
saveUninitialized: true,
store: // your prefered data store,
cookie: {
maxAge: oneDay
}
}));
这需要使用数据存储
,因为会话将所有最终用户信息存储在数据库中。如果您想要一个更简单的方法,我认为您是一个初学者,那么您可以使用在cookie中实现数据。我建议你仔细阅读这些文件。(别担心,这并不像看上去那么难)
一旦您设置了中间件,cookie实现可能是这样的
app.post('/setdata', (req, res, next) => {
// we will set a cookie here
res.cookie('mycookie', {username: req.body.username})
// this will set a cookie on the clients browser with whatever value you wan't
})
现在,在每次请求时,客户端都会自动将此cookie发送到每个路由和
我们可以这样访问它
// future route the user visits
app.get('/showcookie', (req, res, next) => {
// we can access the cookie we set if the user has visited the previous route like
//this
let username = req.cookies.mycookie.username
// and you can do with it what you wan't afterward
})
如果你想要一个超级简单的express应用程序,向你展示一个cookie的工作示例,这里有一个指向我写的一个链接,向我的一些朋友展示cookie在express中是如何工作的。我希望这有帮助。在开始其他工作之前,最好先了解您正在使用的内容,尤其是在处理用户数据时。干杯。是的,这就是课程的目的。谢谢@robertklep@robertklep如何正确使用此处的会话,这需要一个关于如何向Express添加会话支持的教程,这超出了StackOverflow的范围。