swagger - 如何从配置文件中设置 swagger 配置属性
问题描述
我正在使用 Azure API 管理来托管 API 的三个版本 - dev、qa、stage。这些基本上是 api 的三种不同构建配置,因此当导入 APIM 时 - “MyAPI-dev”、“MyAPI-qa”、“MyAPI-stage”。
我正在使用 swagger 来记录文档。当我在 Terraform 中触发修订以构建/重新创建 API 定义时,出现错误:
"my-ApiM-dev" / Resource Group "rg-myApim"): apimanagement.APIClient#CreateOrUpdate: Failure sending
request: StatusCode=409 -- Original Error: Code="IdentifierAlreadyInUse" Message="Resource already exists."
我 99% 确定这是由于SwaggerConfig.cs
文件中的“标题”,它对于所有配置都是相同的值。因此,部署两个具有相同标题的 API 会引发错误。
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "MyApiTitle");
}
如何根据配置使标题唯一?
我尝试在 web.config 值中为每个配置创建配置值并引用配置文件中的键,但它不起作用,SwaggerUi 仅在 web.config 文件中选择了默认值。
web.dev.config:
<add key="BuildConfig" value="dev" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
SwaggerConfig.cs:
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "MyApiTitle-" + ConfigurationManager.AppSettings["BuildConfig"]);
}
另一种选择是编写脚本删除 API、导入 API 并重命名标题,但我会作为最后的手段这样做。
想在项目代码中动态地做到这一点。
解决方案
我可以使用 PowerShell 来实现这一点,请检查是否对您有帮助
另外,检查您是否能够使用您的方法手动部署它。
推荐阅读
- excel - 从循环中排除打开的工作簿/特定文件
- android-emulator - 我正在尝试在 Android Studio 上运行一个程序,但是会弹出一个模拟器错误
- wcf - 即使响应正常,邮递员仍显示“无法得到任何响应”
- spring - 如何从另一个单独的流中调用流?
- react-native - 如何在 React Native 中构建可滚动的长内容视图?
- google-sheets - QUERY 合并两个区域的名称并将它们的出现次数相加
- vue.js - VueJS + 一个组件中的两个 vForm 实例
- javascript - 为什么我的代码返回错误的值?
- c++ - c ++ irc服务器不发送ping
- git - 将一个 git 存储库合并到另一个