考虑以下对Artifactory REST API的POST:
curl -f -u admin:password \
-X POST \
-H 'Content-Type: application/json; charset=UTF-8' \
-d '{ "groups": ["oldgroup", "newgroup"] }' \
http://localhost/artifactory/api/security/users/targetuser
此请求确保用户是" oldgroup"的成员。和#34; newgroup"但另外它从用户那里删除了管理员权限(如果有的话):Ex。更新后{ "admin": true }
更改为{ "admin": false }
。
如果用户最初是管理员,那么似乎需要另外传递{ "admin": true }
,以避免更新的这种奇怪的副作用:
curl -f -u admin:password \
-X POST \
-H 'Content-Type: application/json; charset=UTF-8' \
-d '{ "admin": true, "groups": ["oldgroup", "newgroup"] }' \
http://localhost/artifactory/api/security/users/targetuser
这似乎并未实现为真正的更新。这是一个错误吗?我错过了什么吗?
此外,我想知道这是否与我最初传递的'Content-Type'
标题有关,因为我使用了完整的application/vnd.org.jfrog.artifactory.security.User+json
,但只更改为application/json
具有相同的结果
我可以看到我是否使用PUT方法来创建或替换用户,但这是POST请求,并且似乎没有像我期望的那样工作。
Artifactory REST API文档和我的研究:
答案 0 :(得分:1)
作为Artifactory,在获取更新REST API命令后,无法确定您要更改哪些参数,例如在您更改组的情况下,它将接受您的输入并将其应用于用户。这意味着Admin的值将设置为false,因为这是该字段的默认值。如果您希望保存用户的现有配置,我建议您对用户详细信息执行get请求>将其保存到JSON文件>将其编辑为所需的值>把它贴在Artifactory上。这样你就不会改变你想要保留的值。