【问题标题】:Setting custom properties on SonarQube projects在 SonarQube 项目上设置自定义属性
【发布时间】:2017-03-06 05:14:18
【问题描述】:

我正在关注 Sonarqube Web api 上的 documentation 以获取/设置属性。我想在项目 pi_core 上设置一个属性,其属性名称为“appName”,值为“UCFE”。最终我想通过 PowerShell 完全自动化这个,但现在我只是想像文档一样使用 curl 来验证概念。我的命令是:

curl -u myID:myPassword -X POST http://myServer.ad1.prod:9000/api/properties?id=appName&value=UCFE&resource=pi_core

我已通过执行其他需要管理员授权的通用 Web api 调用来验证我的 ID 和密码是否有效。当我尝试运行上述内容时,我得到:

{"err_code":200,"err_msg":"property created"}'value' is not recognized as an internal or external command, operable program or batch file.
'resource' is not recognized as an internal or external command, operable program or batch file.

知道为什么这个命令(在我看来除了值之外与文档相同)会出现上述错误吗?

【问题讨论】:

    标签: api curl web sonarqube sonarqube-web


    【解决方案1】:

    首先,将 URI 用引号括起来;

    curl -u myID:myPassword -X POST 'http://myServer.ad1.prod:9000/api/properties?id=appName&value=UCFE&resource=pi_core'
    
    • 如果您不将 & 包含在后台并从 shell 运行,则启动时会向后台发送 3 个命令

    • API 文档通常不完整、测试有限、被拼凑在一起,甚至在博客上显示时无意中陷入转义过程。

    在命令行上使用 curl 时,请记住 shell 先解释命令。

    因此,上面的 arg7arg8 被作为参数发送到 cURL。 cURL 不知道“value=UCFE”是什么意思,因此出现错误:

    'value' 未被识别为内部或外部命令

    当您将要作为 一个 参数(例如,cURL 的 URL)发送的文本块周围加上引号时,它看起来像这样:


    旁注 - 为了完整;

    引号是单引号还是双引号通常并不重要,但它们是不同的。

    • 单引号的情况:某些 API 中有 $ 符号。例如 MYOB 有许多参数,如下所示;在这种情况下,如果有很多,使用单引号可能会更容易:

      '?$filter=DateOccurred%20ge%20datetime%272016-07-25%2'
      。在这种情况下,如果有很多,使用单引号可能会更容易。
    • 双引号的情况:很多变量:

      "?id=$id&refresh=true&paramlist=$params&authredirect=$authlevel"

    【讨论】:

    • 必须对 URL 进行一些调整才能真正让它设置属性,但是这样做了。谢谢。
    • 太好了 - 您应该将您的解决方案发布为对您问题的编辑,我相信最终其他人会遇到与此 API 相同的问题。
    猜你喜欢
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 2021-07-21
    • 2012-12-17
    • 1970-01-01
    • 2014-03-21
    相关资源
    最近更新 更多