为生成和定义的sailsjs路由

我试图从我的服务中获得可用的API方法的完整列表。 这主要是显示我们通过所有控制器暴露的API调用。 我知道我可以反思sails.config.routes对象来获取定义的路由列表。 然而,似乎没有一种简单的方法来获取“自动”为您生成的蓝图路线列表。 现在一个想法是,我可以假设一个特定的模式与3种不同types的蓝图生成(行动,rest和快捷方式)。 对于这个简单的事实,这是一个糟糕的主意,这个框架还处于起步阶段,事情也可能发生变化。 我宁愿依靠一个方法来获取这个列表,根据什么是真正定义的,如果它确实改变了,那么我的代码应该自动反映。

所以我挖入帆和帆下帆依赖于所有路由表示。

在第35行的sails源代码initialize.js中,我find了这个代码。

// Create express server var app = sails.hooks.http.app = express(); 

于是我search了其他人如何使用express来输出api。 所以这使我到不同的页面。 http://thejackalofjavascript.com/list-all-rest-endpoints/和如何获得所有注册的路线在Express? ,他们都非常有帮助。 这也让我意识到,风帆是使用3.4.3版本的快递,而不是4.这是相当令人失望,考虑到快递4已经出来了近一年了。 好吧,让我们来解决问题。 一切都存储在sails.hooks.http.app.routes然而,有很多重复的路线,是有点混乱输出自己。 这是我能够以更好的方式输出它。

 //where all routes are stored. var routes = sails.hooks.http.app.routes; var api = {}; var output = []; for(var method in routes){ for(index in routes[method]){ var route = routes[method][index]; for(var opt in route){ if(api[method] === undefined){ api[method] = {}; } if(api[method][route.path] == undefined && route.path !== "/*" && route.path !== "/"){ api[method][route.path] = route.params; } //output.push("("+typeof route + ")" + opt + "&nbsp;&nbsp;&nbsp;&nbsp;" + route[opt] + "<br/>"); } } } for(method in api){ for(route in api[method]){ output.push(method + "&nbsp;&nbsp;&nbsp;&nbsp;" + route); } } res.send(output.join("<br/>")); 

我希望这有助于其他人寻求达到类似的效果。 我认为这种types的数据没有以更好的方式暴露出来,这有点令人伤心。 隐藏在我们的面前,我们必须通过开发者的代码来寻找和啄食。 我的目标是要有一个服务调用,将暴露一个使用我的api的angularjs服务,并将只反映所有可用的方法。 使这个服务更容易消耗和手动去除任何映射的需要。

请享用!