1

我已经使用 swashbuckle 5.x 和 swashbuckle-Odata 将 swagger 集成到我的 Web API/OData 项目中。如果我导航到http://root_url/swagger,我可以在一个大列表中看到所有可用的 API 文档。每件事都很好,但我已经给出了一个Odata 控制器和 API 的列表,我需要在单独的列表中显示它们。我知道这是我需要通过为 swagger 创建一个自定义 index.html 并注入 swaggerconfig.cs 来做的事情

c.CustomAsset("index", thisAssembly, "SwaggerUI_Config.SwaggerExtensions.index.html");

我一直在互联网上研究如何分离 swagger 文档,以便我可以创建一个不同的 HTML 列表并获得我的结果,到目前为止还没有运气。有没有人做过类似的事情?你能给我一些建议或指示我需要从哪里开始吗?

我正在尝试在我的招摇文档中实现以下结构。

+ Custom API list
  +API Controller #1
   > GET API
   > POST API
   > PUT API
   > DELETE API
  +API Controller #2
   > GET API
   > POST API
   > PUT API
   > DELETE API

+ All available API(s)
  +API Controller #1
   > GET API
   > POST API
   > PUT API
   > DELETE API
  +API Controller #2
   > GET API
   > POST API
   > PUT API
   > DELETE API
  +API Controller #3
   > GET API
   > POST API
   > PUT API
   > DELETE API
4

2 回答 2

1

我可能误解了您的要求,但您应该能够使用SwaggerConfig.cs 中调用中的GroupActionsBy方法对您的操作进行分组:EnableSwagger

c.GroupActionsBy(apiDesc =>
{
    string controllerName = apiDesc.ActionDescriptor.ControllerDescriptor.ControllerName;
    string method = apiDesc.ActionDescriptor.SupportedHttpMethods.First().Method;

    return string.Format("{0} {1} API", controllerName, method);
}
于 2016-04-13T11:51:36.450 回答
0

您可能希望将 @Api 注释与 Swagger 提供的 tags 属性一起使用。它将按照您想要的方式在 swagger UI 仪表板上组织您的 API。例如

@Path("apiController1")
@Api(value = "/apiController1", tags = "API CONTROLLER 1")
@Produces({
        MediaType.APPLICATION_JSON
})
public class APIController1 {

    @GET
    @Path("fooGet")
    public final String fooGet() {
        return "Hello, World";
    }
}

在其他一些控制器中。

@Path("apiController2")
@Api(value = "/apiController2", tags = {
        "API CONTROLLER 2", "DEFAULT"
})
@Produces({
        MediaType.APPLICATION_JSON
})
public class APIController2 {

    @GET
    @Path("fooGet2")
    public final String fooGet2() {
        return "Hello, World";
    }
}

Swagger UI Dashboard 看起来像这样。 在此处输入图像描述

于 2016-04-04T19:01:41.033 回答