我可以使用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和一个脚本中的版本?感谢帮助。谢谢。
答案 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
中创建,因此您无法获得所需的内容。
此外,我在门户中添加了版本,并使用Fiddler来捕获请求,它实质上是在创建新API时调用相同的REST API。
一些替代方法供您参考:
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/