2013-03-25 5 views
6

Wdrażam API za pośrednictwem usługi sieciowej, używając Nancy.Czy istnieje sposób na wylistowanie wszystkich dostępnych tras w aplikacji Nancy?

Chciałbym mieć stronę/help lub/docs, która programowo wyświetla listę wszystkich dostępnych tras, aby umożliwić użytkownikom API automatyczne generowanie/aktualizowanie dokumentacji.

Jakieś pomysły, jak to osiągnąć? (Wewnątrz programu obsługi trasy "this.routes" daje dostęp do zbioru zdefiniowanych tras - ale tylko na bieżącym module Nancy, potrzebowałbym programistycznego sposobu wyświetlania wszystkich zarejestrowanych tras, a nie tylko tych w bieżącym module)

+3

odpowiedziałem na to pytanie Ci zamieszczonych na naszej grupa użytkowników – TheCodeJunkie

Odpowiedz

10

Nie dokładnie to, co trzeba, ale nie ma też wbudowany panel deski rozdzielczej w Nancy. Aby umożliwić to zrobić:

public class CustomBootstrapper : DefaultNancyBootstrapper 
{ 
    protected override DiagnosticsConfiguration DiagnosticsConfiguration 
    { 
     get { return new DiagnosticsConfiguration { Password = @"secret"}; } 
    } 
} 

a następnie można uzyskać do niego dostęp na {yournancyapp}/_ Nancy

https://github.com/NancyFx/Nancy/wiki/Diagnostics

0

przykład jak używać IRouteCacheProvider jak @grumpydev mowa w this answer:

// within your module 
public class IndexModule : NancyModule 
{ 
    // add dependency to IRouteCacheProvider 
    public IndexModule(Nancy.Routing.IRouteCacheProvider rc) 
    { 
     routeCache = rc; 
     Get["/"] = GetIndex; 
    } 

    private Nancy.Routing.IRouteCacheProvider routeCache; 

    private dynamic GetIndex(dynamic arg) 
    { 
     var response = new IndexModel(); 

     // get the cached routes 
     var cache = routeCache.GetCache(); 

     response.Routes = cache.Values.SelectMany(t => t.Select(t1 => t1.Item2)); 

     return response; 
    } 
} 

public class IndexModel 
{ 
    public IEnumerable<Nancy.Routing.RouteDescription> Routes { get; set; } 
} 

Możesz uzyskać informacje o routingu, takie jak Path i Method z l ist z Nancy.Routing.RouteDescription. Na przykład z tym poglądem:

<!DOCTYPE html> 
<html> 
<body> 
<p>Available routes:</p> 
<table> 
<thead><tr><th>URL</th><th>Method</th></tr></thead> 
<tbody> 
@Each.Routes 
<tr><td>@Current.Path</td><td>@Current.Method</td></tr> 
@EndEach 
</tbody> 
</table> 
</body> 
</html> 
Powiązane problemy