尝试使用powershell cmdlt New-AzureRmApiManagementOperation
向Azure Api Management Api添加操作时,该命令将返回无法提供信息的响应: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}'
答案 0 :(得分:1)
似乎提供的信息in the documentation有些不准确。当参数存在时,TemplateParameters
不是可选的,并且非常不自动生成。
必须存在Microsoft.Azure.Commands.ApiManagement.ServiceManagement.Models.PsApiManagementParameter
类型的对象数组,并且对于url模板中的每个参数,它必须包含Name
的元素,其值与参数值相同,并且{{1成为某些枚举的成员,可能与某些swagger定义相匹配。
以下代码从模板字符串生成此类数组:
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
}