2016-05-14 8 views
1

express.Router()の使用に問題があり、私の問題が何であるか分かりません。私の問題は、url '/ api/zip'や '/ api/zip /' + zipにGETリクエストをすると、zipは数字の郵便番号で、唯一のルートは '/'です。以下の例では、 '$$$$$$$$$$$'を記録します。複数のURLとオプションのパラメータを持つexpress.Router()の使用

results_api.jsの '/'のルートを削除すると、 'made to it to server.js'がログに記録されますが、results_api.jsからは何も取得されません。より多くのコンテキストコードを掲載する必要があるかどうかを教えてください。 Angularフロントエンドを使用していますが、リクエストが常にserver.js(「server.jsをログに記録」されていることが確認されている)に到達してから、私の問題はresults_api.js内にあると仮定しています。

私は以前にこのルーティング方法を使用していましたが、今回は何がうまくいかないのか分かりません。どのように私はroutes.getを打つために管理します( '/ ZIP /:ファスナー...私のserver.jsファイルで

:?

var express = require('express'); 
var routes = express.Router(); 

//route to index.html 
var assetFolder = Path.resolve(__dirname, '../client/'); 
routes.use(express.static(assetFolder)); 

//api routes 
routes.use('/api/*', require(‘./api/results_api.js’), function(){ 
console.log('made it to server.js')}); 

マイresults_api.jsファイル:

var router = require('express').Router(); 

router.get('/', function(req, res){ 
    console.log('$$$$$$$$$$$$$$$') 

}); 

router.get('/zip', function(req, res){ 
    console.log(‘###################’) 

}); 

router.get('/zip/:zip', function(req, res){ 
    console.log('%%%%%%%%%%%%%%%%%') 

}); 

module.exports = router; 

この質問:

express.Router() get url route with optional parameters

は私に近いですが、私の場合には中間パラメータが(「ありません/ zip/'after'/api ')。これは、私のapiを構築するために間違ったやり方であることをやろうとしていることを示していますか?

答えて

2

これらのハンドラを逆の順序で呼び出します。 /zip/:zip、次に /zip、次に /。ので、あなたのルーターは、それが /と呼ばれていると思うだろう、

            
 
             
  routes.use('/api/*', require(‘./api/results_api.js’), function(){ console.log('made it to server.js')}); 
            
 

/api/*

/api/後に何かを「飲み込ん」になります。

実は、問題は、このラインです。これを次のように変更してください:

routes.use('/api', require('./api/results_api.js'), function() { 
    console.log('made it to server.js') 
}); 
+0

私は実際にそれを試しましたが、 '/'はまだ使用されるハンドラです。 '/'ハンドラのログreq.baseUrlをコンソール化すると、 '/ api/zip/78728'を取得するので、URLが正しく構築されていることがわかります。 – swoopedj

+0

これをテストする機会があった後、答えを更新しました:/ – panta82

+1

それでした!ありがとうございました、私は実際に前にうまくいきませんでしたが、ハンドラが正しくセットアップされておらず、その時点でハンドラが問題であると確信していました。 – swoopedj

関連する問題