2013-03-25 5 views
6

मैं नैन्सी का उपयोग करके एक वेब सेवा के माध्यम से एक एपीआई लागू कर रहा हूं।क्या नैन्सी एप्लिकेशन में सभी उपलब्ध मार्गों को सूचीबद्ध करने का कोई तरीका है?

मैं एक/सहायता या/दस्तावेज़ पृष्ठ चाहता हूं जो सभी उपलब्ध मार्गों को प्रोग्रामेटिक रूप से सूचीबद्ध करता है, ताकि मैं स्वचालित रूप से जेनरेट/अपडेट किए गए दस्तावेज़ों के साथ API उपयोगकर्ता प्रदान कर सकूं।

इसे पूरा करने के तरीके पर कोई विचार? (एक रूट हैंडलर के अंदर, "this.routes" परिभाषित मार्गों के संग्रह तक पहुंच प्रदान करता है - लेकिन केवल वर्तमान नैन्सी मॉड्यूल पर। मुझे सभी पंजीकृत मार्गों को सूचीबद्ध करने के लिए एक प्रोग्रामेटिक तरीका चाहिए, न केवल मौजूदा मॉड्यूल में)

+3

मैं सवाल आप हमारी उपयोगकर्ता समूह – TheCodeJunkie

उत्तर

8

आप IRouteCacheProvider पर निर्भरता लेने और GetCache को फोन करके यह कर सकते हैं - हम वास्तव में मुख्य रेपो में हमारी क़ौम में से एक में ऐसा करते हैं:

https://github.com/NancyFx/Nancy/blob/master/src/Nancy.Demo.Hosting.Aspnet/MainModule.cs#L13

+2

लिंक टूट पर पोस्ट पर इस जवाब जून 2016 के रूप में यह नया स्थान है अगर मैं गलत नहीं हूँ: https: // GitHub। com/NancyFx/नैन्सी/ब्लॉब/मास्टर/नमूने/Nancy.Demo.Hosting.Aspnet/MainModule.cs –

10

आप वास्तव में क्या जरूरत नहीं है, लेकिन वहाँ भी है नैन्सी में एक डैशबोर्ड पैनल में बनाया गया। यह करने के सक्षम करने के लिए:

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

और फिर आप {yournancyapp} को उस तक पहुँच सकते/_ नैंसी

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

0

कैसे @grumpydev this answer में उल्लेख की तरह IRouteCacheProvider उपयोग करने के लिए का उदाहरण:

// 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; } 
} 

आप Path और Method जैसे रूटिंग जानकारी प्राप्त कर सकते हैं। Nancy.Routing.RouteDescription का आईएसटी। इस दृश्य के साथ उदाहरण के लिए:

<!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> 
संबंधित मुद्दे

 संबंधित मुद्दे