4

ASP.NET Core 1.0 は APIExplorer の使用をサポートしていますか? ドキュメントや使用方法を見つけることができません。誰かがそれを使用していて、洞察を共有できますか?

4

2 に答える 2

8

Itay の応答は、私が望んでいた答えを得るのに少し役立ちました。

ApiExplorer を使用する必要がある他の人のために、Rob Lang 博士はHow to get list of all routes in ASP.NET Core? への回答を書きました。.

簡単に言えば、ルートを取得するには、コンストラクター注入を使用して IApiDescriptionGroupCollectionProvider をコントローラーに注入します。次に、ApiDescriptionGroupCollectionProvider.ApiDescriptionGroups.Items でルートを受け取ります。ルートは、ApiExplorer に表示されるようにマークした場合にのみ表示されます。これは、コントローラーごとに、または規則を使用して行うことができます。すべてのコントローラーで使用したいので、IApplicationModelConvention を使用しました。

public class ApiExplorerVisibilityEnabledConvention : IApplicationModelConvention
{
    public void Apply(ApplicationModel application)
    {
        foreach (var controller in application.Controllers)
        {
            if (controller.ApiExplorer.IsVisible == null)
            {
                controller.ApiExplorer.IsVisible = true;
                controller.ApiExplorer.GroupName = controller.ControllerName;
            }
        }
    }
}

次に、Startup.cs に規則を追加します。

public void ConfigureServices(IServiceCollection services) 
{ 
    // other calls omitted for brevity
    services.AddMvc(opt => 
    {
        opt.Conventions.Add(new ApiExplorerVisibilityEnabledConvention());     
    });
}
  • ASP.NET Core ですべてのルートのリストを取得する方法からのコード? - ロブ ラング博士、16 年 3 月 2 日 14:40
于 2016-07-14T14:06:16.057 に答える
1

ASP.NET Core 用の ApiExplorer のダウンロード可能な NuGet があります: Microsoft.AspNetCore.Mvc.ApiExplorer 1.0.0

したがって、これはサポートされていることを意味します(AFAIKでもサポートされているSwagger / Swashbackleで使用されています)。

于 2016-07-14T11:12:06.643 に答える