2015-01-05 10 views
5

.xmlまたは.csvまたは.json(デフォルトでは、拡張子がjsonを返さない)のようなオプションの拡張子が必要です。expressjsルートのオプションの拡張

app.get('/days-ago/:days(.:ext)?', function(req, res) { 

これは動作していないようですが、何か間違っていますか?

GET /days-ago/7.xml 
GET /days-ago/7.csv 
GET /days-ago/7.json 
GET /days-ago/7 

答えて

0

実際の正規表現:app.get(/\/days-ago\/\w+(\.\w+)?/), function (req, res {...(またはそれに類するもの)を試してください。ルートパラメータの組み込み文法はかなり限定されています。実際にあなたが必要とするものを表現することができるかもしれませんが、正規表現が言語に組み込まれ、よく理解されていることは私には分かりません。

+0

どのようにパラメータを取得できますか? – chovy

+0

req.paramsは、それらの配列です –

6

あなたはルートに間違ったパターンを使用しているようです。ここでは1修正される:

app.get('/days-ago/:days\.:ext?', function(req, res) { 

したがって、私は空のパラメータをチェックし、このような目的の1つの

何かに設定しますミドルウェア作成し、あなたの目標を達成するために:

var defaultParamMiddleware = function(req, res, next) { 
    if (!req.params.ext) { 
     req.params.ext = 'json'; 
    } 

    next(); 
}; 

app.get('/days-ago/:days\.:ext?', defaultParamMiddleware, function (req, res) { 
    res.json(req.params); 
}); 
関連する問題