gpt4 book ai didi

powershell - 使用 powershell 将带有模板参数的操作添加到 azure api

转载 作者:行者123 更新时间:2023-12-03 03:00:12 24 4
gpt4 key购买 nike

尝试使用 powershell cmdlt New-AzureRmApiManagementOperation 将操作添加到 Azure Api Management Api 时,该命令返回无信息的响应:ValidationError:一个或多个字段包含不正确的值.

当操作的 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}'

最佳答案

看来提供的信息in the documentation有点不准确。当存在参数时,TemplateParameters 不是可选的,并且不会自动生成。

必须存在 Microsoft.Azure.Commands.ApiManagement.ServiceManagement.Models.PsApiManagementParameter 类型的对象数组,并且对于 url 模板中的每个参数,它必须包含一个带有 的元素Name 与参数值具有相同的值,并且 Type 是某个枚举的成员,可能与某些 swagger 定义匹配。

以下代码从模板字符串生成这样的数组:

$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

关于powershell - 使用 powershell 将带有模板参数的操作添加到 azure api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49643336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com