[英]Customising swagger ui to separate documentation
我已经使用 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 列表并实现我的结果,到目前为止还没有运气。 有没有人做过类似的事情? 你能给我一些建议或指示我需要从哪里开始吗?
我正在尝试在我的 swagger 文档中实现以下结构。
+ 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
我可能误解了您的要求,但您应该能够在 SwaggerConfig.cs 中的EnableSwagger
调用中使用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);
}
您可能希望将 @Api 注释与 Swagger 提供的标签属性一起使用。 它将按照您想要的方式在 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";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.