使用express.Router()与多个url和可选参数
我遇到麻烦,使用express.Router()的方式,我wan,我不知道我的问题是什么。 我的问题是,当我对url'/ api / zip'或'/ api / zip /'+ zip发出GET请求时,其中zip是一个数字邮政编码,唯一被打的路由是'/',在下面的例子中logging了“$$$$$$$$$$$$”。
当我在results_api.js中取出'/'的路由时,'将其设置为server.js'被logging,但是我没有从results_api.js中得到任何东西。 让我知道如果我需要发布更多的上下文代码。 我正在使用一个Angular前端,但我假设,因为我的请求总是得到server.js(通过'使得server.js被logging'validation),我的问题是在results_api.js。
之前我已经使用过这个路由方法,但是不知道这次是怎么回事。 我如何设法打route.get('/ zip /: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()获取带有可选参数的url路由
是接近我的,但没有中间参数(在我的情况下'/ zip /'后'/ api')。 这是否表明我正在尝试做的只是构build我的api的错误方法?
以相反的顺序调用这些处理程序。 /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') });