【发布时间】:2019-04-29 12:28:33
【问题描述】:
我的情况比较简单。我有一个非常大的 .NET Core 2.1 MVC/WebApi,分为几个区域,代表我系统的不同模块。我使用 Swagger (SwashBuckle),效果很好。我的路由类似于{area}/{controller}/{action}。
在 Swagger UI 中,每个操作都被分组到控制器中(标准行为)。我的控制器和操作列表变得非常庞大且难以掌握。正因为如此,如果 Swagger 可以将我的控制器分成不同的区域,我会很高兴!可以折叠area x 和area x 中的每个控制器。
我真的很想念这个功能或自己实现它的方法!任何想法表示赞赏!
更新
我试过用标签来注释动作。
这给了我:
- Area 1
- MethodFromControllerA()
- MethodFromControllerB()
- Area 2
- MethodFromControllerC()
- MethodFromControllerD()
我想要什么:
- Area 1
- ControllerA
- MethodFromControllerA()
- ControllerB
- MethodFromControllerB()
- Area 2
- ControllerC
- MethodFromControllerC()
- ControllerD
- MethodFromControllerD()
更新 2
另一种选择是为我的每个区域设置多个规格。就像每个区域的不同 Swagger UI。可能吗?
【问题讨论】:
-
也许也可以看看这个:stackoverflow.com/questions/37703251/…(虽然没有 asp.net 核心)
-
@B12Toaster 这些很接近 - 但没有具体的解决方案!另一种选择是为我的每个领域制定多个规范。就像每个区域的不同 Swagger UI。可能吗?
-
取决于您的 api 以及您希望如何使其可访问 :) 我会避免这样做,因为它很难搜索您的 api。您可以做的另一件事(hacky)是将 js 代码注入到您的 swagger ui 中,然后通过 javascript dom 操作以某种方式重新排列和缩进生成的 html/css div:D
-
如果您在同一区域的控制器共享相同的路径前缀,那么您可以在“/”上拆分,并根据此前缀重新排序。否则,尝试通过注释以某种方式将元信息添加到您的控制器或操作中。 ...或者可能为您的控制器添加一个前缀,例如 AreaxFooController。然后在您的 js 中对控制器名称执行拆分...有创意:D
标签: asp.net-core swagger asp.net-core-2.1 swashbuckle