您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在传递一些上下文时如何在expressjs中重定向?

在传递一些上下文时如何在expressjs中重定向?

有几种方法可以将数据传递到不同的路由。当然,最正确的答案是查询字符串。您需要确保值正确地是encodeURIComponentencodeURIComponent

app.get('/category', function(req, res) {
  var string = encodeURIComponent('something that would break');
  res.redirect('/?valid=' + string);
});

您可以通过使用来获取发送的参数,从而在其他路由中遇到麻烦req.query

app.get('/', function(req, res) {
  var passedVariable = req.query.valid;
  // Do something with variable
});

对于更动态的方式,您可以使用url核心模块为您生成查询字符串:

const url = require('url');    
app.get('/category', function(req, res) {
    res.redirect(url.format({
       pathname:"/",
       query: {
          "a": 1,
          "b": 2,
          "valid":"your string here"
        }
     }));
 });

因此,如果您想重定向所有请求查询字符串变量,则只需执行

res.redirect(url.format({
       pathname:"/",
       query:req.query,
     });
 });

如果您使用Node> = 7.x,则还可以使用querystring核心模块

const querystring = require('querystring');    
app.get('/category', function(req, res) {
      const query = querystring.stringify({
          "a": 1,
          "b": 2,
          "valid":"your string here"
      });
      res.redirect('/?' + query);
 });

另一种方法是在会话中进行设置。 您可以在此处阅读如何进行设置,但是设置和访问变量的方法如下:

app.get('/category', function(req, res) {
  req.session.valid = true;
  res.redirect('/');
});

然后在重定向之后…

app.get('/', function(req, res) {
  var passedVariable = req.session.valid;
  req.session.valid = null; // resets session variable
  // Do something
});

也可以使用Express的旧功能req.flash。在较新版本的Express中执行此操作将需要您使用其他库。从本质上讲,它允许您设置变量,这些变量将在下次访问页面显示并重置。它可以方便地向用户显示错误,但是认情况下它仍已被删除。编辑:找到了添加此功能的库。

希望这将使您对如何在Express应用程序中传递信息有一个大致的了解。

其他 2022/1/1 18:14:07 有604人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶