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

问题描述 投票:1回答:2

我可以使用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
2个回答
0
投票

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

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

enter image description here

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

enter image description here

一些解决方法供您参考:

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

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

3.使用powershell Invoke-RestMethod来调用REST API


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/

© www.soinside.com 2019 - 2024. All rights reserved.