我有一个包含大量服务的 Web API 项目。最初,我们使用 ASP.NET 开箱即用的标准 API 文档。
现在我想将我们的文档迁移到 Swagger。我使用Swashbuckle。我在文档中遇到了一些我不想描述的非常具体的问题。
话虽如此,也是因为我想保持我的 swagger 文档的清洁和高质量,我想找到一种方法来添加 API 以一个一个地招摇。
所以,主要问题是:我可以迁移到大摇大摆地逐步向文档中添加新的 API 并保持我的旧文档不变吗?
我有一个包含大量服务的 Web API 项目。最初,我们使用 ASP.NET 开箱即用的标准 API 文档。
现在我想将我们的文档迁移到 Swagger。我使用Swashbuckle。我在文档中遇到了一些我不想描述的非常具体的问题。
话虽如此,也是因为我想保持我的 swagger 文档的清洁和高质量,我想找到一种方法来添加 API 以一个一个地招摇。
所以,主要问题是:我可以迁移到大摇大摆地逐步向文档中添加新的 API 并保持我的旧文档不变吗?
您可以使用该[Obsolete()]
属性对 Swashbuckle 隐藏方法。首先,您需要配置 Swashbuckle 以在构建 Swagger 文档时查找此属性:
config.EnableSwagger(
routePrefix + "docs/{apiVersion}/swagger",
c =>
{
// Set this flag to omit descriptions for any actions decorated with the Obsolete attribute
c.IgnoreObsoleteActions();
// Set this flag to omit schema property descriptions for any type properties decorated with the
c.IgnoreObsoleteProperties();
});
然后装饰你想要隐藏的动作:
[Obsolete("Hidden from Swashbuckle during renovations")]
[HttpGet]
Task<object> async WhyILostMyJob(string query)
{
return await Database.SqlExecAsync(query, isAdmin: true);
}
请注意,这只隐藏了方法,它仍然是可调用的。如果你想把它带到下一步,你需要引入一个身份验证或授权过滤器。
您可以使用ApiExplorerSettingsAttribute
不希望出现在 Swagger 文档中的 on 控制器和方法,如此处所述。我想开箱即用的文档可以用类似的方式控制(我在这方面没有任何经验)。结合这两个功能,您可以将文档逐渐移至 Swagger。