Node.js NodeJs路由中间件即使没有路径也可以工作
这是我使用的代码 在webserver.js中Node.js NodeJs路由中间件即使没有路径也可以工作,node.js,express,middleware,Node.js,Express,Middleware,这是我使用的代码 在webserver.js中 var objApiServer = require('./node_scripts/ApiServer'); app.use('/APICalls/', objApiServer); var objApiServer = require('./node_scripts/ApiServer'); var objApiServer1 = require('./node_scripts/ApiServer1'); app.use('/APICalls
var objApiServer = require('./node_scripts/ApiServer');
app.use('/APICalls/', objApiServer);
var objApiServer = require('./node_scripts/ApiServer');
var objApiServer1 = require('./node_scripts/ApiServer1');
app.use('/APICalls', objApiServer(router, request));
app.use('/GetDbData', objApiServer1(router, request));
在ApiServer.js中
module.exports = function (router, request) {
//FUNCTION
router.get('/GetDbData', function (req, res) {
/* SAMPLE CODE GOES HERE */
});
}
module.exports = function (router, request) {
//FUNCTION
return new express.Router()
.get('/GetDbData', function (req, res) {
/* SAMPLE CODE GOES HERE */
})
.post('/PostDbData', function (req, res) {
/* SAMPLE CODE GOES HERE */
});
}
url路径上的
//mysite.domain/APICalls/GetDbData
工作正常
但它可以继续工作
//mysite.domain/GetDbData(我不想要)
我错过什么了吗。如果我想要另一个函数呢
对于//mysite.domain/GetDbData
我在webserver.js中使用了另一个函数
app.get('/GetDbData' .......
但是它不接收任何呼叫,而是传递公共路由器对象。您可以在每个路由文件(如ApiServer.js、ApiServer1.js等)中创建一个新的路由器对象 下面是相同的代码段: 在webserver.js中
var objApiServer = require('./node_scripts/ApiServer');
app.use('/APICalls/', objApiServer);
var objApiServer = require('./node_scripts/ApiServer');
var objApiServer1 = require('./node_scripts/ApiServer1');
app.use('/APICalls', objApiServer(router, request));
app.use('/GetDbData', objApiServer1(router, request));
在ApiServer.js中
module.exports = function (router, request) {
//FUNCTION
router.get('/GetDbData', function (req, res) {
/* SAMPLE CODE GOES HERE */
});
}
module.exports = function (router, request) {
//FUNCTION
return new express.Router()
.get('/GetDbData', function (req, res) {
/* SAMPLE CODE GOES HERE */
})
.post('/PostDbData', function (req, res) {
/* SAMPLE CODE GOES HERE */
});
}
在ApiServer1.js中
module.exports = function (router, request) {
//FUNCTION
return new express.Router()
.put('/UpdateDbData', function (req, res) {
/* SAMPLE CODE GOES HERE */
});
}
这是演示代码。请尝试以这种方式实施: 在webserver.js中-- 在ApiServer.js中-- 下面是上述代码段的输出截图:
我解决了这个问题,我在这里发布了我的答案。我有多条路线,其中一条是
app.use('/APICalls/', objApiServer);
app.use('/RouterA', objRouterA);
app.use('/', objRouterB);
最后一条路线就是问题所在。Its允许在没有完整路径的情况下调用任何路由器功能。所以如果我打电话
//mysite.domain/APICalls/func1APICalls
及
//mysite.domain/func1picalls
它将被路由到“objApiServer”中的相同函数
将最后一行更改为
app.use('/B/', objClassA);
解决了问题与我发布的代码相同。。。。你检查过我的问题了吗?当路径没有“/APICalls/”时,我不希望路由器功能工作。嘿,我对答案做了更改。请检查@DrVishnuthanks以了解更改,但我不明白为什么我需要额外的路由器?你可以查看下面的答案截图。这就是我所需要的……让我试试,我认为这与我所实现的类似。无论如何,非常感谢分享截图,因为这有助于其他人理解我的问题…:-)我在webserver.js文件中还有一些“app.use('/',objAnother);”,当我对它们进行注释时,它们都是有效的…@DrVishnu,正如你所说,在注释掉其他
app.use(…)
你的代码之后。你能从你的webserver.js
中分享更多的代码吗。这样我们就可以更好地了解出了什么问题,或者需要做哪些更改才能使用完整的代码。。问题是,如果我们有任何路由器带有“app.use('/',objAnother)”;我们可以在没有完整路径的情况下调用路由器内部的任何函数。。。我会将回复作为答案,引用代码。再次感谢