【发布时间】:2016-09-02 17:53:10
【问题描述】:
在 Express 4 中,有一个对象可以列出你的应用路由:app._router.stack
我尝试在 todos 模块路由文件中的路由中将其转储到控制台:
exports.update = (req,res) => {
// console.log(app._router.stack);
res.status(200).send({message:'TODO modify an existing post by using param ' + req.params.taskId, routes: app._router.stack});
};
使用 Advance REST 客户端进行测试。我看到了我的routes 对象:
"routes": [21]
9: {
"name": "session"
"params": {}
"path": ""
"keys": [0]
"regexp": {
"fast_slash": true
}-
}-
10: {
"name": "<anonymous>"
"params": {}
"path": ""
"keys": [0]
"regexp": {
"fast_slash": true
}-
}-
11: {
"name": "mounted_app"
"keys": [0]
"regexp": {}
}-
12: {
"name": "bound dispatch"
"keys": [0]
"regexp": {}
"route": {
"path": "/home"
"stack": [1]
0: {
"name": "<anonymous>"
"keys": [0]
"regexp": {}
"method": "get"
}-
-
"methods": {
"get": true
}-
}-
}-
13: {
"name": "bound dispatch"
"keys": [0]
"regexp": {}
"route": {
"path": "/"
"stack": [1]
0: {
"name": "<anonymous>"
"keys": [0]
"regexp": {}
"method": "get"
}-
-
"methods": {
"get": true
}-
}-
}-
14: {
"name": "mounted_app"
"keys": [0]
"regexp": {}
}-
15: {
"name": "mounted_app"
"params": {}
"path": "/todos"
"keys": [0]
"regexp": {}
}-
16: {
"name": "mounted_app"
"keys": [0]
"regexp": {}
}-
17: {
"name": "serveStatic"
"keys": [0]
"regexp": {
"fast_slash": true
}-
}
在我的 Express 应用中,这是我安装的应用的定义方式:
if (module.re('core')){
register(app);
} else {
var sub = express();
register(sub);
app.use('/' + module, sub);
}
function register(app){
app.set('root', root);
app.set('module_name', module);
require(routes)(app);
app.set('views', view_path);
app.set('view engine', view_engine);
}
更多详情请查看my source
问题:
如果您查看我的来源,我有几个已安装的应用程序,todos 只是其中之一。为什么上面的路由对象中没有列出其他模块/安装的应用程序?为什么路由中有
<anonymous>和空mounted_app 对象。是否存在安全漏洞或任何其他问题?如何列出核心、待办事项应用程序和其他挂载应用程序的 RESTful 端点(最好是自动)?如何调整我的应用程序设计/架构以方便上市?我想要一个包含所有路由的对象,以便能够列出主应用程序导航栏的核心路由和子导航栏的已安装应用程序路由。
非常感谢。
编辑:不重复,我看到那篇关于 Express 4 路线的帖子 app._router.stack 并继续进行我的测试。阅读我的第一行。
【问题讨论】:
-
查看我的第一行和我的编辑注释。
-
您的标题实际上与 dup 的标题相同,因此您确实要求在那里进行 dup。如果这不是您真正要问的,那么将您的标题更改为更具描述性或更好地总结您最后列出的两个实际问题的其他内容。如果您已经尝试了 dup 中的所有内容,但他们没有回答您的问题,那么您需要对此进行解释并引用特定的 dup,以便人们知道哪些内容不能解决您的问题。
-
不,是 mounted Apps 的,标题中存在字样。
-
“已安装的应用程序”是什么意思? Express 术语中没有这样的术语。有一个
app对象和路由器。不确定挂载的应用是什么。 -
From object tree, "name": "mounted_app",这是它们(子应用程序)在
app._router.stack中定义和调用的内容
标签: javascript node.js rest express