2016-05-14 42 views
1

我在使用express.Router()麻烦我婉,我不相信我的问题是,什么样的方式使用express.Router()。我的问题是,当我做一个GET请求的URL“/ API/ZIP”或“/ API/ZIP /” +拉链,其中拉链是一个数字的邮政编码,那被击中的唯一途径是“/”,在下面的例子中记录了'$$$$$$$$$$$$'。有多个URL和可选参数

当我拿出路线“/”在results_api.js,“去到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 /'在'/ api'之后)。这是否表明我正在尝试做的仅仅是构建我的api的错误方式?

回答

2

称这些处理器以相反的顺序。然后 /zip,然后 /

其实,问题是这一行:/api/

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

/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

这是它!谢天谢地,我实际上已经尝试过忽略ht'/ *',但是我没有正确设置我的处理程序,并且在那个时候确信我的处理程序是问题所在。 – swoopedj