7

ナンシーを使用して、Webサービスを介してAPIを実装しています。

APIユーザーに自動生成/更新されたドキュメントを提供できるように、利用可能なすべてのルートをプログラムで一覧表示する/helpまたは/docsページが必要です。

これを達成する方法について何かアイデアはありますか?(ルートハンドラー内で、「this.routes」は定義されたルートのコレクションへのアクセスを提供しますが、現在のNancyModuleのみです。現在のモジュール内のルートだけでなく、登録されているすべてのルートを一覧表示するプログラム的な方法が必要です)

4

3 に答える 3

10

正確には必要なものではありませんが、ナンシーにはダッシュボードパネルが組み込まれています。それを有効にするには:

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

そして、{yournancyapp} /_nancyでアクセスできます

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

于 2013-10-16T06:59:17.253 に答える
8

IRouteCacheProviderに依存し、GetCacheを呼び出すことで、これを行うことができます。実際には、メインリポジトリのデモの1つでこれを行います。

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

于 2013-03-26T13:54:17.653 に答える
0

この回答IRouteCacheProviderで言及されている@grumpydevのように使用する方法の例:

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

PathMethodリストのようなルーティング情報を取得できます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>
于 2016-06-03T06:38:42.650 に答える