2011-12-14 11 views
36

のparamsのは、私はこのようなルートを取得するとしましょう:のNode.js/Expressのルーティング

app.get('/documents/format/type', function (req, res) { 
    var format = req.params.format, 
     type = req.params.type; 
}); 

私は私のフォーマットで

http://localhost:3000/documents/json/mini 

のような要求を作成し、変数を入力するのであれば "になりますjson 'と' mini 'と同じですが、私がリクエストすると

http://localhost:3000/documents/mini/json 

ではありません。だから私の質問です:どのように私は異なる順序で同じ変数を得ることができますか?

+1

を経由して、それを受け取ることができ、一般的に使用されるdomain.com/test?format=json&type=miniフォーマットのために行く考えてみましょう'。 URLはパラメータの順不同ではありません – Raynos

答えて

110

あなたのルートがOKではない、それはこのようにする必要があります(と「:」)

app.get('/documents/:format/:type', function (req, res) { 
    var format = req.params.format, 
     type = req.params.type; 
}); 

はまた、あなたは、残念ながら、パラメータの順序を入れ替えることができません。 req.params(およびreq.query)の詳細については、hereを参照してください。

+0

alessioalexレスポンスありがとうございます! – Erik

+1

// var sanitizer = require( 'sanitizer'); var format = sanitizer.escape(req.params。format);あなたは本当に結果を消毒するべきです。または、あなたのウェブサイトに巨大な脆弱性があります – user3806549

17

mini`と `タイプ== JSON ==あなたが`ドキュメント/ミニ/ json`は `形式ではありません、あなたは簡単に

app.get('/test', function(req, res){ 
    var format = req.query.format, 
     type = req.query.type; 
}); 
+0

ありがとうございました。あなたの答えは私にとっても役に立ちます! – Erik

関連する問題