1

ある nodejs ファイルから別の nodejs ファイルにリダイレクトしたいと考えています。res.redirect(URL) を使用しましたが、実行すると「cannot GET /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 ドキュメントは、ここにあります。

私が理解しているのは、スクリプトごとに関数/ページ/ URLを作成しようとしているということです:nodepost.jsファイルはページです。コード編成は良いことですが、最初にノード + エクスプレスがどのように機能するかに注目しましょう。

私が理解していることから、アプリケーションにはいくつかの公開された URL があります。

  • 「/」ホームページ
  • "/nodepostgre" (おそらく 'a' 引数を受け入れますか?)
  • "/nodepost" は引数を受け入れます: a

nodepost.js注: file = page の id を忘れてしまったので、URL に拡張子を表示したくないので、nodepost

あなたができることは、3つのURLエクスポジションをセットアップすることです:

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を尊重する (Rest を説明するのに最適なリンクではないかもしれませんが...)
  2. パラメータなしで「/nodepost」を公開できます
  3. 確かに100万の他のもの
于 2012-04-19T09:47:39.453 に答える