【问题标题】:Using API Apps with Swagger in dev/test/production environments在开发/测试/生产环境中使用带有 Swagger 的 API 应用程序
【发布时间】:2015-10-15 00:53:11
【问题描述】:

我正在将一个组合的 Azure 网站(同时包含控制器和 ApiControllers)迁移到一个拆分的 Web 应用程序和 API 应用程序。我们称之为 MyApp。

我创建了 MyAppDevApi、MyAppTestApi 和 MyAppProductionApi API 应用程序(在不同的应用程序服务中)来托管这三个环境,期望将代码从一个环境提升到另一个环境。

到目前为止,我只部署到 MyAppDevApi,因为我才刚刚开始。

当我对我的纯 UI 项目执行 Add/Azure API App Client 以开始引用 API 应用程序并将其指向 MyAppDevApi 时,它使用 AutoRest 在我的代码中创建类。这些类现在都具有名称 MyAppDevApi,而不仅仅是 MyAppApi,这是我部署到每个环境的代码的实际名称空间。显然,我无法检查...我如何通过测试和生产来推广它?

Swagger JSON 中没有任何内容引用此名称,因此它必须在 AutoRest 端(我认为)。

有没有人想出策略或变通方法来处理 API 应用程序的多环境推广问题?

编辑

到目前为止,我想出的最好的方法是将 Swagger 从 API 应用程序下载到本地文件(同样,它只有原始代码的命名空间,而不是 API 应用程序的名称) ,然后将其导入 Web App。这将在 Web 应用程序中生成具有我期望的命名的类。

问题是我必须编辑生成的 MyAppApi.cs 文件的 _baseUri 属性以从 AppSetting 中提取,具有不同的 web.config.dev、.test、.prod,然后进行 web.config 转换。我的意思是,这会起作用,但是每次我更改 API 应用程序的界面时,我都会重新生成……然后我会记得再次更改 _baseUri……而且有人,有时会忘记执行此操作,然后部署到生产环境。它真的非常脆弱。

那么...有人有更好的主意吗?

【问题讨论】:

    标签: azure azure-web-app-service azure-api-apps


    【解决方案1】:

    我不太清楚您为什么要创建三个不同的应用程序,每个环境一个?一个应用程序很好,并为每个环境使用 web.config 转换。这是我做所有应用程序的一般方式,并且工作正常。

    可以在here 找到有关如何应用 web.config 转换的信息,这可能对您的情况有所帮助。

    希望对您有所帮助。

    【讨论】:

    • 抱歉,如果不清楚...我不会创建三个不同的 Visual Studio 解决方案。我正在尝试将一个 Visual Studio 解决方案(由一个 Web 应用程序和一个 API 应用程序组成)部署到三个不同的 Azure 应用程序服务实例——Dev、Test 和 Prod——而 AutoRest 的命名让我失望了。
    【解决方案2】:

    嗯,这就是我解决这个问题的方法:

    1. 将 Swagger 文件从 API App 下载到本地硬盘。
    2. 将本地 Swagger 文件导入 Web 应用程序以生成具有我的代码而不是环境命名的类。
    3. 使用 AppSettings 指定特定于环境的设置以指向 API 应用程序。这可以是 web.config 转换,或者您可以在应用程序设置的 Web 应用上的 Azure 门户中指定它们。
    4. 使用构造函数实例化生成的 API 应用客户端,该构造函数接受一个指向 API 应用的 URL(这些在类级别,因此是静态的):
        private readonly static Uri apiAppUrl = new Uri(CloudConfigurationManager.GetSetting("ApiAppUrl"));
        private readonly static MyAppApi myAppApi = new MyAppApi(apiAppUrl);
    

    我仍然希望有一个不需要下载 Swagger 文件的解决方案,但总而言之,如果这是唯一必要的解决方法,那还不错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      相关资源
      最近更新 更多