express.js 中的错误路由
False routing in express.js
我正在尝试使用以下过滤器来转移包裹,但它失败了:
我已经使用 express.js:
建立了路线
app.get('/billdetails/:year/:month/:phoneId', function (req, res, next) {
var db = req.db;
var year = req.params.year;
var month = req.params.month;
var phoneId = req.params.phoneId;
async.parallel({...})
app.get('/billdetails/lastinvoices/:number/:limit', function (req, res, next) {
var db = req.db;
var number = req.params.number;
var limit = req.params.limit;
async.parallel({...})
因此,当我请求第一个 URL 时一切正常,但是当我尝试请求第二个路由时,我得到的响应与第一个相同。
有人知道为什么会这样吗?
问候并感谢您。
您的第一条路线与第二条路线采用相同数量的参数。
这意味着当您请求第二条路线时,它将首先测试第一条路线,因为它之前已定义。
这意味着如果您使用以下请求请求路线二:
url/billdetails/lastinvoices/12/123
您将被路由到具有以下参数的第一条路线:
year: "lastinvoices"
month: 12
phoneId: 123
您可以先定义第二条路线,然后让它先尝试。但我不能 100% 确定它会一直有效。
就我个人而言,我会重命名路由,或者更愿意从普通的 get-param 中获取限制参数,即:url/billdetails/lastinvoices/1?limit=1
。
所以第二条路线将被定义为:
/billdetails/lastinvoices/:number
我正在尝试使用以下过滤器来转移包裹,但它失败了: 我已经使用 express.js:
建立了路线app.get('/billdetails/:year/:month/:phoneId', function (req, res, next) {
var db = req.db;
var year = req.params.year;
var month = req.params.month;
var phoneId = req.params.phoneId;
async.parallel({...})
app.get('/billdetails/lastinvoices/:number/:limit', function (req, res, next) {
var db = req.db;
var number = req.params.number;
var limit = req.params.limit;
async.parallel({...})
因此,当我请求第一个 URL 时一切正常,但是当我尝试请求第二个路由时,我得到的响应与第一个相同。
有人知道为什么会这样吗?
问候并感谢您。
您的第一条路线与第二条路线采用相同数量的参数。
这意味着当您请求第二条路线时,它将首先测试第一条路线,因为它之前已定义。
这意味着如果您使用以下请求请求路线二:
url/billdetails/lastinvoices/12/123
您将被路由到具有以下参数的第一条路线:
year: "lastinvoices"
month: 12
phoneId: 123
您可以先定义第二条路线,然后让它先尝试。但我不能 100% 确定它会一直有效。
就我个人而言,我会重命名路由,或者更愿意从普通的 get-param 中获取限制参数,即:url/billdetails/lastinvoices/1?limit=1
。
所以第二条路线将被定义为:
/billdetails/lastinvoices/:number