我想从我的服务中获得可用的API方法的完整列表。这主要是显示我们通过所有控制器暴露的API调用。我知道我可以反思sails.config.routes对象来获取定义的路由列表。然而,似乎没有一种简单的方法来获取“自动”为您生成的蓝图路线列表。现在有一种想法是,我可以用3种不同类型的蓝图生成(动作,休息和快捷方式)来假设一种特定模式。对于这个简单的事实,这是一个坏主意,这个框架处于起步阶段,而且事情可能会发生变化。我宁愿依靠一种方法来根据真正定义的内容来获取这个列表,如果它确实发生了变化,那么我的代码应该自动反映出来。生成和定义的sailsjs路由
1
A
回答
1
所以我挖成帆和帆依靠快递的所有路由在幕后。
在线路35上,我发现这个代码位帆源initialize.js。
// Create express server
var app = sails.hooks.http.app = express();
所以然后我搜索了其他人如何使用express输出api。所以这让我看到了不同的页面。 http://thejackalofjavascript.com/list-all-rest-endpoints/和How to get all registered routes in 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 + " " + route[opt] + "<br/>");
}
}
}
for(method in api){
for(route in api[method]){
output.push(method + " " + route);
}
}
res.send(output.join("<br/>"));
我希望这对希望实现类似效果的其他人有帮助。我认为这种类型的数据没有以更好的方式暴露出来,这有点令人伤心。隐藏在我们的面前,我们必须通过开发者的代码来寻找和啄食。我的目标是要有一个服务调用,它将暴露一个使用我的api的angularjs服务,并且只会反映所有可用的方法。使这项服务更容易消耗,并且不需要手动进行任何映射。
享受!