【问题标题】:How to return only specific properties from Azure Devops REST APIs如何仅从 Azure Devops REST API 返回特定属性
【发布时间】:2020-04-08 05:58:45
【问题描述】:

我正在尝试使用 Azure devops 获取特定项目的所有构建详细信息 GET: https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.1

此 API 返回具有许多属性的 JSON 对象。在 Jenkins API 中,我们提供了仅过滤所需属性的规定。 Azure Devops API 中是否有类似的方法?

根据文档https://docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/get?view=azure-devops-rest-5.1,我尝试使用propertyFilter,但没有帮助我。

任何帮助或指针都会很有用。

【问题讨论】:

  • 嗨@Likhith Prakash URI 参数中的属性查询可能不是构建的属性。作为解决方法,您可以使用脚本从返回的构建结果中过滤属性。请查看以下答案中的 powershell 脚本示例。

标签: azure api azure-devops


【解决方案1】:

从 DevOps 返回的 JSON 看起来很像这样:

{
  "count": 1000,
  "value": [
    {
      "id": ,
      "buildNumber": "",
      "status": "",
      "result": "",
      "queueTime": "",
      "startTime": "",
      "finishTime": "",
      "url": "",
      "definition": {
        "drafts": [

        ],
        "id": ,
        "name": "",
        "url": "",
        "uri": "",
        "path": "",
        "type": "",
        "queueStatus": "",
        "revision": ,
        "project": {
          "id": "",
          "name": "<NAMEOFYOURPROJECT>",
          "url": "",
          "state": "",
          "revision": ,
          "visibility": "",
          "lastUpdateTime": ""
        }
      },
      "buildNumberRevision": 2,
      "project": {
        "id": "",
        "name": "<NAMEOFYOURPROJECT>",
        "url": "",
        "state": "",
        "revision": ,
        "visibility": "",
        "lastUpdateTime": "2"
      },
      ...

您要过滤的关键字是project/name

您要过滤 project/name 的 ODATA 查询字符串如下所示: https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.1&amp;$filter=startswith(project/name,'&lt;NAMEOFYOURPROJECT&gt;')

【讨论】:

    【解决方案2】:

    URI 参数中的properties 查询可能不是我们认为的返回响应json 的属性。它可能是返回的构建结果的属性properties 中的properties

    作为解决方法,您可以编写脚本以从返回的构建结果中过滤所需的属性。请在 powershell 脚本中查看以下示例:

    $url ="https://dev.azure.com/{OGR}/{PROJ}/_apis/build/builds?`$top=5&api-version=5.1"
    $PAT="PAT"
    $base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))
    $result = Invoke-RestMethod -Uri $murl -Headers @{authorization = "Basic $base64AuthInfo"} -Method get 
    
    # filter the requested properties from the result
    $requiredProperties = $result.value | select {$_.project.name}, {$_.definition.name}, id, buildNumber  
    
    $requiredProperties
    

    以上脚本获取前 5 个构建的结果,然后使用脚本 ($result.value | select {$_.project.name}, {$_.definition.name}, id, buildNumber) 选择所需的属性。您将看到选定的属性,如下图所示:

    希望以上有所帮助!

    【讨论】:

      猜你喜欢
      • 2021-01-28
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 2019-08-30
      • 2020-09-17
      • 1970-01-01
      相关资源
      最近更新 更多