【问题标题】:Using powershell, how do I create an api for an api management service with a version in path segment?使用 powershell,如何为路径段中的版本的 api 管理服务创建 api?
【发布时间】:2018-09-04 20:10:19
【问题描述】:

我可以如下使用powershell创建一个api

New-AzureRmApiManagementApi -Context $azContext -ApiId $apiId -Name $apiName -ServiceUrl "https://myapp-dev-apims.azure-api.net/${subDomainName}" -Protocols @("https") -Path $subDomainName

但是,此 cmdlet 不会创建版本。看来我需要使用

New-AzureRmApiManagementApiVersionSet

但是,在使用诸如 myApi.com/cart/v1 之类的路径段添加版本时,它没有很好地记录如何执行此操作。

在门户中创建版本时,它会显示“版本控制创建一个新 API。这个新 API 通过版本控制方案链接到您现有的 API。选择一个版本控制方案并为您的 API 选择一个版本号:”

我是否需要再次使用 New-AzureRmApiManagementApi 创建一个新的 api?这令人困惑。

解决方法是仅使用 New-AzureRmApiManagementApi cmdlet 最初创建 api,然后进入门户手动创建版本。但是,如果创建 api 及其版本的过程在脚本中是可重复的,那显然会很好。

单独使用powershell,如何在一个脚本中同时创建api和版本?帮助表示赞赏。谢谢你。

【问题讨论】:

  • 这个问题有更新吗?

标签: azure powershell azure-powershell azure-api-management


【解决方案1】:

在门户中创建版本时,它会显示“版本控制创建一个新 API。这个新 API 通过版本控制方案链接到您现有的 API。选择一个版本控制方案并为您的 API 选择一个版本号:”

它说的没错,如果你在门户中Add version,它会创建一个新的 API,就在 UI 中,它看起来就像在原始 API 下一样。您可以在resource explorer 中清楚地查看它们,api 版本中会有一个"apiVersion": "xx"。添加版本后,它会在apis 中添加一个新的API,并在api-version-sets 中自动创建一个版本集,参考截图。 根据我的测试,命令New-AzureRmApiManagementApiVersionSet 只是在api-version-sets 中创建,不会在apis 中创建,所以你无法得到你想要的。

另外,我在门户中添加版本,并使用Fiddler 来捕获请求,它本质上调用相同的REST API 并创建一个新的API。

一些解决方法供您参考

1.如您所说,手动创建 api 并在门户中添加版本。

2.尝试使用New-AzureRmResource创建api版本。

3.使用powershellInvoke-RestMethod调用REST API

【讨论】:

    【解决方案2】:

    要创建版本化 API,您首先需要创建一个版本集。您为此找到了 Powershell cmdlet。但是,查看New-AzureRmApiManagementApi 似乎您无法提供 versionsetid 作为参数,这是将版本集链接到 API 所必需的。

    我认为仅使用 Powershell 不可能实现您想要实现的目标,但您可以考虑使用 ARM 模板。 这些模板可以由 Powershell 启动,并提供在一个脚本中创建完整版本化 API 的选项。

    为了获得灵感,您可以查看这篇博文: https://blog.eldert.net/api-management-ci-cd-using-arm-templates-linked-template/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2017-08-19
      相关资源
      最近更新 更多