【问题标题】:Create Nexus User Through REST API通过 REST API 创建 Nexus 用户
【发布时间】:2015-07-23 19:59:02
【问题描述】:

我正在使用 Nexus OSS 2.11.x,并希望通过 REST API 创建新用户。以下命令正确检索所有用户的列表,从而确认我能够调用 API:

curl -u $NEXUS_USER:$NEXUS_PASS $NEXUS_LOCAL/service/local/users

根据 API 文档,我构造了一个 JSON 用户对象:

export USER='{"data":{"email":"testing@example.com","firstName":"Test","lastName":"Ing","userId":"testing","status": "active","roles":["repository-any-read"],"password": "test123$"}}'

然后我提交一个 POST 请求:

curl -i -H "Accept: application/json" -H "ContentType: application/json; charset=UTF-8" -v -d "$USER" -u $NEXUS_USER:$NEXUS_PASS $NEXUS_LOCAL/service/local/users

响应返回 HTTP 201(已创建) - 但 GET /service/local/users 只返回原始用户列表。用户不在 UI 提供的列表中,并且日志(在 UI 中可用)甚至没有表明发生了任何活动。 $NEXUS_USER 帐户具有“Nexus 管理员”角色。

有人对我在这里忽略的内容有什么建议吗?

【问题讨论】:

    标签: nexus


    【解决方案1】:

    我使用了上面的代码,遇到了同样的问题:

    HTTP/1.1 201 Created
    

    什么也没发生。 经过一些调试后,我注意到上面有一个简单的错字,这是一个问题。 而是:

    -H "ContentType: application/json; charset=UTF-8"
    

    应该是:

    -H "Content-Type: application/json; charset=UTF-8"
    

    (注意Content-Type 中的破折号)它开始工作了。

    【讨论】:

    • 不幸的是,我目前无法访问 Nexus OSS 服务器来尝试此操作。您显然是对的,它应该是带有连字符的Content-Type。多么愚蠢的错误!我可能在“第二天”(下面的帖子)正确输入了它,但从未发现其中的差异。
    【解决方案2】:

    上面的代码是正确的,今天执行得很好。服务器在一夜之间重新启动,并以某种方式解决了问题。

    进一步明确环境变量

    • NEXUS_LOCAL 是您的关系服务器。如果您使用默认设置在 localhost 上安装,则使用 export NEXUS_LOCAL=http://localhost:8081/nexus (Bash) 或 SET NEXUS_LOCAL=http://localhost:8081/nexus (Windows)。
    • NEXUS_USERNEXUS_PASS 是具有管理员角色的帐户的明文,或者可能是 UI 管理员(没有测试过后者)。

    【讨论】: