4

ASP.NET Core 1.0 是否支持使用 APIExplorer?我找不到关于它的任何文档或如何使用它,有没有人使用它并且可以分享一些见解?

4

2 回答 2

8

Itay 的回应帮助我得到了我想要的答案。

对于其他需要使用 ApiExplorer 的人,Rob Lang 博士写了一篇关于如何获取 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());     
    });
}
于 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 回答