我们可以在单个路由器文件中定义多个路由。 例如:考虑我们有公司和用户选项卡,我想为每个选项卡定义1个路由器文件。所有公司相关的呼叫都应由公司路由器处理,用户相关的呼叫应由用户路由器处理。
//app.js
app.use('/', require('./routes/user'));
app.use('/api/user/load_user_list', require('./routes/user'));
app.use('/api/user/get_user_detail', require('./routes/user'));
//User.js router
var express = require('express');
var router = express.Router();
//router 1
router.get('/', function (req, res, next) {
//do something here -
});
//router 2
router.get('/api/user/load_user_list', function (req, res, next) {
//do something here
});
//router 3
router.get('/api/user/get_user_detail', function (req, res, next) {
//do something here
});
module.exports = router;
目前,当app收到'/ api / user / load_user_list'的电话时,我的“路由器1”被调用。
我错过了什么。为了解决这个问题,我想我可以根据请求baseUrl进行单个路由器调用并委托给不同的函数。
任何帮助/建议将不胜感激..谢谢
答案 0 :(得分:1)
而不是:
app.use('/', require('./routes/user'))
app.use('/api/user', require('./routes/user'));
只需使用:
//router 2
router.get('/load_user_list', function (req, res, next) {
//do something here
});
//router 3
router.get('/get_user_detail', function (req, res, next) {
//do something here
});
在你的路由器文件中重命名路由如下:
if (ContextCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(InterviewListActivity.this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE_FINE_LOC);
}
if (ContextCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(InterviewListActivity.this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_CODE_COARSE_LOC);
}
if (ContextCompat.checkSelfPermission(context,
Manifest.permission.LOCATION_HARDWARE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(InterviewListActivity.this,
new String[]{Manifest.permission.LOCATION_HARDWARE}, REQUEST_CODE_LOC_HRD);
}
原因: 当app.use('/ api / user / xyz',require('./ xyz'))被调用时,api / user / xyz之后的uri路径被发送到要匹配的路由器
答案 1 :(得分:0)
这里发生的事情是,由于您在/api/user/load_user_list
中输入了app.use('/api/user/load_user_list', require('./routes/user'));
,因此 express将在./routes/user
中的所有路由前面加上{{1} }。
您的/api/user/load_user_list
中的/
路由器1 变成user.js
中的/api/user/load_user_list
+ /
和/api/user/load_user_list
成为user.js
(来自app.js)+ /api/user/load_user_list
。
因此,只有当您按下/api/user/load_user_list
时,您的路由器2 才会被呼叫。
您可以将app.js代码更改为
/api/user/load_user_list/api/user/load_user_list
和您的app.use('/api/user', require('./routes/user'));
到
routes/user.js
现在,当您点击//router 1
router.get('/', function (req, res, next) {
//do something here -
});
//router 2
router.get('/load_user_list', function (req, res, next) {
//do something here
});
//router 3
router.get('/get_user_detail', function (req, res, next) {
//do something here
});
时,它将匹配/api/user/load_user_list
(app.js)+ /api/user
(routes / user.js),并会调用您想要的路由。