重定向到根URL,以在节点JS中响应时传递一些数据

时间:2018-11-12 09:51:30

标签: node.js express

通过传递一些用户详细信息重定向到主url。下面的代码将重定向到根url,并通过url参数传递用户名。

 exports.successfull = (req,res) => {
      var userName = JSON.parse(req.body).username
      res.redirect("/?username="+ userName);
    }

因此,客户端的预期网址将为https://www.example.com/?username=“ John%20%Doe”

另一种方法是

res.send({
  url: "/",
  data: {
   username: userName
  }
})

res.send不重定向,而是发送字符串,这意味着在客户端它将给出“ /”。

但是在url上不会有任何字符串参数。

因此,如果没有字符串参数并且使用重定向,如何实现以上目标。如果我使用res.send,它将发送字符串,如果我使用res.redirect,则需要附加参数。

我只想重定向并传递数据,而不在url参数上显示用户名

我需要使用会话,cookie或其他任何东西吗?

1 个答案:

答案 0 :(得分:0)

您可能不得不以不同的方式来考虑。您可以在您的快速app实例上调用一个setter,它将在app上设置一个变量,然后可以在以后进行检索,但这将使您的Web服务器保持状态。如果您不知道自己在做什么,那么有状态的Web服务器可能会出现很多错误。

您可以改为在相同的POST请求中接收数据并渲染模板。

app.post('/getdata', function(req, res){
  res.render('/examplePage.SOMETEMPLATEENGINE', {
    data: req.body.username
  });
});

或者更好的是,您可以使用快速会话或cookie。可以使用express-session中间件来设置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
    }
}));

这将需要使用data store,因为会话将所有最终用户信息存储在数据库中。如果您是初学者,那么如果您想要一种更简单的方法,则可以使用cookie-parser在cookie中实现数据。我建议您阅读文档。 (不要担心它并不像看起来那样难)

设置了cookie-parser中间件后,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
})

如果您想要一个超级简单的快递应用程序,向您显示cookie的工作示例,请访问我写给GitHub repo的链接,以向我的一些朋友展示cookie在快递中的工作方式。我希望这有帮助。在进行其他操作之前,最好总是先了解您正在使用的内容,尤其是在处理用户数据时。干杯。