2016-09-21 3 views
0

私は2つのルートを持っています:app.useは静的ファイルを提供します。異なるパラメータでExpressJSルーティング

app.use('/test', earlyAccess(), express.static(path.join(__dirname, staticFolder))) 

app.get("/test", callback); 
app.get("/test/:id", callback); 

// Here is the callback 
var fileStream = fs.createReadStream(staticFolder + '/test.html'); 
fileStream.on('open', function() { 
    fileStream.pipe(res); 
}); 

ブラウザから、私がlocalhost:80/test/1と呼んだ場合、正常に動作します。 私がlocalhost:80/testに電話すると、メインページにリダイレクトされます。サーバーコンソールで、私は304警告を得た。

expressjsのパラメータに基づいてルートを使用するにはどうすればよいですか?

+0

304は、変更されていないドキュメントのみを示します。 '/ test'のコールバックは何ですか? –

+0

はHTMLを読み込みます。 test /:idと/ testは同じhtmlページを読み込みます。 – user2325247

+0

コールバック機能を提供できますか? –

答えて

-3

あなたはこのようにそれを試すことができます。)あなたがミドルウェアを書くことができ、それが(次の呼び出しすることを意味し、

app.use("/test/*", (req, res, next) => { 
    // your callback(req, res); 
    next(); 
}); 
app.get("/test/:id", callback); 

app.use

+0

そして、これは元の質問にどのように答えますか? – jfriend00

+0

うまく行かなかった。 – user2325247

+0

これは問題には当てはまりません。それは経路の一般化です。 –

0

は、fs.createReadStream代わりのようなものres.sendFileを使用してみてください:あなたは、コールバックの中にリクエストパラメータを確認することができ

res.sendFile('test.html'); 
+0

問題は決して/ testのコールバックには当てはまらないということです。 – user2325247

+0

いいえ、これらの2つのルート以外のルートがありますか?とにかく、返信ファイルの場合、res.sendFileはfs.createReadStreamよりも優れています。 –

+0

私は理解していません。あなたはもっとルートをどういう意味ですか?/testまたは/ test/1は私のためにHTMLページを読み込むべきです。 – user2325247

0

を、リクエストで

app.get('/test', callback); 
app.get('/test/123', callback); 

// callback 
if(req.params.second) { 
    // code for route with param. - /test/123 
} 
else { 
// code for route without param. - /test 
} 

パラメータは

としてreq.paramsに格納されています
{first:'NameOfRoute', second:'NextParam'} ... 

ここには

{first:'test', second:'123'} 
+0

私はそれを得た。コールバックには決して当たらない。 – user2325247

関連する問題