我可以使用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和版本?感谢帮助。谢谢。
在门户网站中创建版本时,它会说“版本控制会创建一个新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
中创建,因此您无法获得所需的内容。
此外,我在门户网站中添加版本,并使用Fiddler来捕获请求,它实质上调用相同的REST API创建一个新的API。
一些解决方法供您参考:
1.如您所述,手动创建api并在门户中添加版本。
2.尝试使用New-AzureRmResource
创建api版本。
3.使用powershell Invoke-RestMethod
来调用REST API。
要创建版本化API,首先需要创建一个版本集。您找到了Powershell cmdlet。但是,查看New-AzureRmApiManagementApi
似乎无法提供versionsetid作为参数,这是将版本集链接到API所需的。
仅凭Powershell,我认为您可能无法实现的目标,但您可以考虑使用ARM模板。这些模板可以由Powershell启动,并提供在一个脚本中创建整个版本化API的选项。
有关灵感,您可以查看此博客文章:https://blog.eldert.net/api-management-ci-cd-using-arm-templates-linked-template/