使用Powershell,如何为具有路径段中版本的api管理服务创建api?

时间:2018-09-04 20:10:20

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

我可以使用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和一个脚本中的版本?感谢帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

  

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

说的正确,如果您在门户网站中Add version,它将在UI中创建一个新的API,就像在原始API下一样。您可以在resource explorer中清楚地检查它们,api版本中将有"apiVersion": "xx"。添加版本后,它将在apis中添加新的API,并在api-version-sets中自动创建一个版本集,请参见屏幕截图。 根据我的测试,命令New-AzureRmApiManagementApiVersionSet仅在api-version-sets中创建,而不会在apis中创建,因此您无法获得所需的内容。

enter image description here

此外,我在门户中添加了版本,并使用Fiddler来捕获请求,它实质上是在创建新API时调用相同的REST API

enter image description here

一些替代方法供您参考

1。如前所述,创建api并在门户中手动添加版本。

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

3。使用Powershell Invoke-RestMethod调用REST API

答案 1 :(得分:0)

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

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

为获得启发,您可以看一下此博客文章: https://blog.eldert.net/api-management-ci-cd-using-arm-templates-linked-template/

相关问题