1

我想从一个 nodejs 文件重定向到另一个 nodejs 文件。我使用 res.redirect(URL),但执行时显示“无法获取 /nodepage”

目前我正在使用

// Handler for GET /
app.get('/nodepostgres', function(req, res){
    res.redirect('/nodepost.js?a=1');
}); 
4

1 回答 1

4

我认为您的问题中有些事情没有正确解释或无法正确理解。

我不确定“从一个 nodejs 文件重定向到另一个 nodejs 文件”是什么意思。您似乎认为节点脚本文件对应于 URL(或页面)。那是错误的。节点脚本对应于一个应用程序,该应用程序可能(或可能不)通过多个 URL 公开多个页面,并且可以从其他脚本文件导入应用程序逻辑(您将为站点或应用程序运行单个根脚本文件)。它与您可能知道的(香草,无框架)PHP 完全不同。

通过不同的 url 暴露不同的页面称为路由,所有关于路由的 Express 文档都可以在这里找到

我的理解是,您尝试为每个脚本创建一个函数/页面/网址:nodepost.js 文件是一个页面。代码组织是一件好事,但让我们先关注 node + express 是如何工作的。

据我了解,您的应用程序有一些公开的网址,比如说:

  • “/“ 主页
  • “/nodepostgre”(也许接受一个 'a' arg ?)
  • "/nodepost" 接受 arg : a

注意:我们忘记了 file = page 的 id,我们不希望扩展名出现在 URL 上,所以nodepost.js变成nodepost

您可以做的是设置 3 个 url expositions:

app.get('/', function(req, res) { res.render('home'); }); // render the home page
app.get('/nodepost', function(req, res) { // expose the nodepost function
  var a = req.params.a;
  doSomethingWith(a);
  // res.render, res.send ? whatever you want...
]);
app.get('/nodepostgres', function(req, res){ // use of res.redirect(url[, status])
  res.redirect('/nodepost');
});

那是你要的吗 ?

然后,这是一种更优雅的处理参数(“a”)的方法。

app.get('/notepost/:a', function(req, res) { // called via /nodepost/here_goes_a_valu ; no "?"
  var a = req.params.a;

});

为什么更好?

  1. 尊重REST(可能不是描述休息的最佳链接,但是......)
  2. 允许您在没有参数的情况下公开“/nodepost”
  3. 当然还有一百万其他的东西
于 2012-04-19T09:47:39.453 回答