@Marta 你的目标是什么?拥有 API 版本后,您希望它们做什么?这将决定解决方案。
如果您只想在请求中报告此信息,这是内置的;你只需要打开它。
options.ReportApiVersions = true;
这将返回api-supported-versions和api-deprecated-versions标头。您可以在版本发现wiki 主题中查看此信息以及更多信息。
您还可以在控制器中当前执行的操作上使用GetApiVersionModel扩展方法。再次 - 根据您在管道中的时间和位置确定您检索信息的方式。
对于文档类型场景,您还需要API Versioning API Explorer包。这将为 Web API 提供一个IApiExplorer实现,它将按 API 版本整理所有 API 和路由。您可以根据需要对它们重新排序。这与 Swagger/OpenAPI 生成器用于构建其文档的方法/技术相同。您可以通过以下方式将其集成到您的应用程序中:
var apiExplorer = configuration.AddVersionedApiExplorer(options => { });
// TODO: use the API Explorer
究竟如何使用 API Explorer 取决于您。请注意,内置的IApiExplorer接口不支持grouping的概念。如果你纯粹依赖界面,你会得到一个扁平化的列表。这取决于您引用 API Explorer 实现的位置。如果您稍后在应用程序中请求 API Explorer,您要么必须在原始IApiExplorer接口的范围内工作,要么转换为VersionedApiExplorer。AddVersionedApiExplorer
扩展方法总是返回一个VersionedApiExplorer。您还可以强制创建和/或扩展VersionedApiExplorer,而不是使用提供的扩展或configuration.Services.GetApiExplorer()
.
您可以在此处查看集成示例。但是,如果您真的想看看它是如何使用的并且您不熟悉IApiExplorer,那么您可能需要查看Swashbuckle之类的存储库。
我希望这会有所帮助。随时提出更多问题。