簡體   English   中英

如何獲取我在Restify服務器中使用的所有路由的列表

[英]How to get list of all routes I am using in restify server

我有一個設計如下的應用程序;

//server.js =====================================================
var restify = require('restify'),
    route1 = require('./routes/route1),
    route2 = require('./routes/route2),
    ....
    ....
    ....

var server = restify.createServer({
    name: 'xyz_server'
  });

route1(server);
route2(server);

現在每個路由文件看起來像belwo

   //route1.js =====================================================

   module.exports = function(server) {
      server.get('/someRoute',function(req,res,next){
                //.. do something
        });
      server.get('/anotherRoute',function(req,res,next){
                 //..something else
       });

   }; 

現在的問題是,我們總共有十幾個路由文件和數百個路由。 這個項目有多個開發人員,每天都會增加一些路線。

Restify中是否有功能為我提供系統中所有路由的列表?

我正在尋找的是這樣的:

server.listAllRoutes();

有人知道嗎?

試試這個

function listAllRoutes(server){
  console.log('GET paths:');
  server.router.routes.GET.forEach(
    function(value){console.log(value.spec.path);}
    );
  console.log('PUT paths:');
  server.router.routes.PUT.forEach(
    function(value){console.log(value.spec.path);}
    );
}

listAllRoutes(server);

這應該列出所有GET和PUT路徑,添加POST和DELETE應該很容易:)

有一個router.getRoutes()方法,但是它返回的對象不是最好用於列出事物的對象。 您可以擺弄它,將其變成具有所需形狀的數組。

另外,您可以將所有路由作為數組訪問,然后將它們映射,如果您使用諸如better-console類的lib在node中提供console.table ,則better-console 以下代碼在restify@8.3.0對我來說很restify@8.3.0

import console from 'better-console';

function listRoutes(server) {
  const { routes } = server.router._registry._findMyWay; // beware these are probably meant to be private APIs, they could be subject to change
  const mapped = routes.map(({ method, path }) => ({ method, path }));

  console.table(mapped.sort((a, b) => a.method > b.method));
}

2019更新: server.router.routes不再可用,而是我們有server.router.getRoutes()返回地圖。 因此,我們可以使用以下命令記錄所有路線:

function listAllRoutes(server) {
  Object.values(server.router.getRoutes()).forEach(value =>
    console.log(
      `ENDPOINT REGISTERED :: ${value.method} :: ${server.url}${value.path}`
    )
  );
}

http://restify.com/docs/server-api/#server

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM