【问题标题】:Is ApiExplorer supported in ASP.NET Core 1.0, and how to use it?ASP.NET Core 1.0 是否支持 ApiExplorer,如何使用它?
【发布时间】:2016-07-14 08:06:50
【问题描述】:

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

【问题讨论】:

    标签: asp.net-core asp.net-mvc-apiexplorer


    【解决方案1】:

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

    对于需要使用 ApiExplorer 的其他人,Rob Lang 博士写信给an answer to How to get a 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());     
        });
    }
    

    【讨论】:

    • 我遇到了同样的问题,我似乎找不到关于如何启用 API Explorer 的文档。你能分享更多关于这方面的信息吗?
    【解决方案2】:

    有一个用于 ASP.NET Core 的 ApiExplorer 的可下载 NuGet:Microsoft.AspNetCore.Mvc.ApiExplorer 1.0.0

    所以这意味着它受支持(由 Swagger/Swashbackle 使用,AFAIK 也支持)。

    【讨论】:

      猜你喜欢
      • 2016-05-21
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2015-03-23
      • 1970-01-01
      相关资源
      最近更新 更多