gpt4 book ai didi

c# - 为同一个 API 创建的多个文档

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:54 25 4
gpt4 key购买 nike

在我的项目中我配置路由如下:

config.Routes.MapHttpRoute(
name: "ApiLogin",
routeTemplate: "Api/Default/{controller}/{action}",
defaults: new { action = "Get" }
);

config.Routes.MapHttpRoute(
name: "ApiByAction",
routeTemplate: "Api/{controller}/{action}",
defaults: new { action = "Get" },
constraints: null,
handler: sessionHandler
);

一个路由不使用 HttpMessageHandler 而另一个路由使用。

当使用 Swagger 生成文档时,它是生成副本(每个路由一个)。

有没有办法抑制某些路由?

最佳答案

我假设您正在使用 Swashbuckle,而我不是这方面的专家。我跟着这个discussion在github上并提出了以下解决方案。您需要创建以下类:

public class FilterRoutesDocumentFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
var keys = swaggerDoc.paths.Keys.Where(x => x.Contains("/api/Default/")).ToList();

foreach (var key in keys)
swaggerDoc.paths.Remove(key);
}
}

然后在 SwaggerConfig.cs 中添加以下行:

.EnableSwaggerUi(c => { c.DocumentFilter<FilterRoutesDocumentFilter>(); }

它似乎工作正常。希望这会有所帮助。

关于c# - 为同一个 API 创建的多个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41727343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com