Javascript 如何列出快速安装的应用程序的所有REST端点?
在Express 4中,有一个对象可以列出应用程序路由:Javascript 如何列出快速安装的应用程序的所有REST端点?,javascript,node.js,rest,express,Javascript,Node.js,Rest,Express,在Express 4中,有一个对象可以列出应用程序路由:app.\u 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,
app.\u 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});
};
使用AdvanceREST客户端进行测试。我看到了我的路由
对象:
"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 4 routes的帖子。\u router.stack
,然后继续我的测试。阅读我的第一行。您可以使用提供的代码访问express app中的所有注册路线您可以使用提供的代码访问express app中的所有注册路线以下是我的第二个问题。第一个问题仍有待您的帮助。
我创建了一个名为moduls的额外数组,基本上modul是一个迭代模块名,我能够分配moduls[modul]=express()
app实例
+ moduls[modul] = express();
+ var sub = moduls[modul];
register(sub);
换句话说,一个挂载的应用程序被注册到modules
array中,之后我可以使用u.forOwn循环通过它,并将app.\u router.stack
对象分配给一个名为apps的新数组
+ _.forOwn(moduls, function(val,key){
+ apps[key] = val._router.stack;
+ });
+
+ app.set('apps', apps);
然后,你可以在任何你喜欢的地方调用“应用程序”。在我的示例中,我选择将其加载到路由中,以查看发送到API客户端的响应
如果可以,请帮助解决我在问题1中的问题。以下是解决我的第二个问题。第一个问题仍有待您的帮助。 我创建了一个名为moduls的额外数组,基本上modul是一个迭代模块名,我能够分配
moduls[modul]=express()
app实例
+ moduls[modul] = express();
+ var sub = moduls[modul];
register(sub);
换句话说,一个挂载的应用程序被注册到modules
array中,之后我可以使用u.forOwn循环通过它,并将app.\u router.stack
对象分配给一个名为apps的新数组
+ _.forOwn(moduls, function(val,key){
+ apps[key] = val._router.stack;
+ });
+
+ app.set('apps', apps);
然后,你可以在任何你喜欢的地方调用“应用程序”。在我的示例中,我选择将其加载到路由中,以查看发送到API客户端的响应
如果可以,请帮助解决我在问题1中的问题。我从那里得到了
应用程序。_router.stack
(你发布的链接)和控制台结果(routes对象)是在转储之后得到的。我从那里得到了应用程序。_router.stack
(你发布的链接)和控制台结果(routes对象)是在转储它之后。查看我的第一行和编辑注释。你的标题实际上与dup的标题相同,因此你真的需要dup。如果这不是你真正想问的问题,那么把你的标题改成更具描述性的,或者对你在最后列出的两个实际问题做一个更好的总结。如果你尝试了dup中的所有内容,但他们没有回答你的问题,那么你需要解释这一点并参考特定的dup,以便人们知道什么不能解决你的问题。不,这是针对已安装的应用程序的,标题中有这些词。你说的“已安装的应用程序”是什么意思?在快速行话中没有这样的术语。有一个应用程序
对象和路由器。不确定挂载的应用程序是什么。从对象树中,“名称”:“挂载的应用程序”,这是它们(子应用程序)在应用程序中定义和调用的内容。_router.stack
查看我的第一行和我的编辑注释。你的标题实际上与dup的标题相同,因此你确实在那里要求dup。如果这不是你真正想问的问题,那么把你的标题改成更具描述性的,或者对你在最后列出的两个实际问题做一个更好的总结。如果你尝试了dup中的所有内容,但他们没有回答你的问题,那么你需要解释这一点并参考特定的dup,以便人们知道什么不能解决你的问题。不,这是针对已安装的应用程序的,标题中有这些词。你说的“已安装的应用程序”是什么意思?在快速行话中没有这样的术语。有一个应用程序
对象和路由器。不确定装入的应用程序是什么。从对象树中的“名称”:“装入的应用程序”,这是它们(子应用程序)在应用程序中定义和调用的内容。_router.stack