2017-06-12 10 views
0

例えば/homeなどのルートを持つエクスプレスアプリを実行しています。今、私は変更したいurl/en/home/sp/homeなどExpressJS:ミドルウェアの経路を変更する

私の要件は、これらの/en/homeから/homeへのルートと/homeと同様に/sp/homeをマッピングし、/en/sp

Iに基づいて要求オブジェクトにヘッダを追加することです上記のような経路に基づいて経路を修正し、そこから情報を抽出するミドルウェアを作成したい。

私はregexを使って2番目の部分を実行できますが、その場で経路を変更する方法を見つけることができませんでした。

+0

は、この作品か、より多くの要件がありますか? 'router.get( '/:lang/home')' –

+0

[NodeJS Expressでのルートマッピングの削除]の可能な複製(https://stackoverflow.com/questions/10378690/remove-route-mappings-in-nodejs-express ) –

+0

@Arpit、私は何百もあるので、急行で私の既存のルートを変更したくないです。関連情報を抽出し、既存のルートの1つに変更するだけです。ちょうどコードの変更を最小限に抑えたい。 –

答えて

-1

あなたは、ミドルウェアの下に試すことができます。

app.use('/en/home', function(req, res, next) { 
    req.headers.lang = 'en';  
    res.redirect('/home'); 
}); 

app.use('/sp/home', function(req, res, next) { 
    req.headers.lang = 'sp';  
    res.redirect('/home'); 
}); 
+0

既に説明しました。 –

+0

@ArpitSolankiは、各ミドルウェアのヘッダーに情報を格納し、それを家にリダイレクトする答えを更新しました –

+0

スケーラブルなソリューションではありません。何百ものルートがあり、/ en/...、/ sp/...、/ hi/...、/ ta/...などの接頭辞がないと想像してください –

関連する問題