Использование powershell для добавления операции с параметрами шаблона в интерфейс Azure
При попытке добавить операцию в API-интерфейс управления Azure Api с помощью команды powershell cmdlt New-AzureRmApiManagementOperation
команда возвращает неинформативный ответ: ValidationError: One or more fields contain incorrect values
,
Команда выполняется успешно, когда операция UrlTemplate
не содержит параметров (то есть фрагментов URL в фигурных скобках), но не обрабатывает вызовы там, где они присутствуют.
Это работает как ожидалось:
New-AzureRmApiManagementOperation -Context $context -ApiId $aid -OperationId $oid -Name $name -Method $method -UrlTemplate '/all'
Но это не так:
New-AzureRmApiManagementOperation -Context $context -ApiId $aid -OperationId $oid -Name $name -Method $method -UrlTemplate '/{id}'
1 ответ
Представляется, что информация, представленная в документации, несколько неточна. TemplateParameters
не является обязательным, когда параметры присутствуют, и очень не генерируется автоматически.
Массив объектов типа Microsoft.Azure.Commands.ApiManagement.ServiceManagement.Models.PsApiManagementParameter
должен присутствовать, и для каждого параметра в шаблоне URL он должен содержать элемент с Name
с тем же значением, что и значение параметров, и Type
будучи членом некоторого перечисления, предположительно совпадающего с некоторыми определениями чванства.
Следующий код генерирует такой массив из строки шаблона:
$tparam = Select-String "{([^}]+)}" -input $template -AllMatches |
Foreach { $_.matches } |
Foreach {
$p = New-Object -TypeName Microsoft.Azure.Commands.ApiManagement.ServiceManagement.Models.PsApiManagementParameter
$p.Name = $_.Groups[1].Value
$p.Type = "string"
return $p
}
Это может сопровождаться:
New-AzureRmApiManagementOperation -Context $context -ApiId $aid -OperationId $oid -Name $name -Method $method -UrlTemplate $template -TemplateParameters $tparam