使用gh api设置组织Actions权限时,如何正确传递数组字段?
问题:调用GitHub API时如何正确传递数组类型的
patterns_allowed字段? 我尝试调用gh api --method PUT orgs/<ORG>/actions/permissions/selected-actions接口,这个接口接收3个字段,其中一个是patterns_allowed。试了好几种传参方式,一直收到以下错误:
{
"message": "Invalid request.\n\nFor 'properties/patterns_allowed', "..." is not an array.",
"documentation_url": "https://docs.github.com/rest/reference/actions#set-allowed-actions-for-an-organization"
}
其中一次尝试的代码如下:
ALLOWED="foo,bar" gh api --method PUT \ orgs/${{github.repository_owner}}/actions/permissions/selected-actions \ --field "github_owned_allowed=true" \ --field "verified_allowed=false" \ --field "patterns_allowed=[$ALLOWED]"
请问正确传递数组类型字段的方式是什么?
正确传参方式
GitHub CLI的gh api命令传递数组类型字段有两种常用方法:
方法1:多次使用--field指定数组元素
把数组的每个元素单独用--field传递,字段名后加[]标识数组项:
gh api --method PUT \ orgs/${{github.repository_owner}}/actions/permissions/selected-actions \ --field "github_owned_allowed=true" \ --field "verified_allowed=false" \ --field "patterns_allowed[]=foo" \ --field "patterns_allowed[]=bar"
方法2:传递合法JSON格式的数组字符串
如果要通过变量传递数组,需构造标准JSON数组字符串,直接赋值给字段:
ALLOWED='["foo", "bar"]' gh api --method PUT \ orgs/${{github.repository_owner}}/actions/permissions/selected-actions \ --field "github_owned_allowed=true" \ --field "verified_allowed=false" \ --field "patterns_allowed=$ALLOWED"
也可以通过Here-string传递完整的JSON请求体:
gh api --method PUT \ orgs/${{github.repository_owner}}/actions/permissions/selected-actions \ --input - << EOF { "github_owned_allowed": true, "verified_allowed": false, "patterns_allowed": ["foo", "bar"] } EOF
你之前的错误原因是直接拼接[$ALLOWED]生成的是[foo,bar],这不是合法的JSON数组(元素未加引号),导致GitHub API无法识别为数组类型。
内容的提问来源于stack exchange,提问作者gsf
相关产品推荐
相关产品推荐

