如何使用 API 列出 Nexus 存储库中的所有组件?

How to list all component in Nexus repository with API?

我在名为 myrepo 的 Nexus 中使用 RAW 格式存储库。我上传 .tar.gzzipexe 等文件。在此存储库中,我有许多子文件夹和文件,现在我想列出所有带有 API.

的文件

我使用这个由 Nexus 生成的执行 UI:

curl -X GET "http://localhost:8081/service/rest/v1/search?repository=myrepo&format=raw" -H  "accept: application/json"

问题是结果不完整。结果大约有 1000 行 json,但结果中还缺少其他文件。

我也尝试过按名称过滤:

curl -X GET "http://localhost:8081/service/rest/v1/search?q=update&repository=myrepo&format=raw" -H  "accept: application/json"

但相同 - 列表不完整。

我的问题是:

如何列出此 RAW 存储库中的所有组件?

我设法用 groovy 脚本做到了这一点

在脚本中,我获取令牌并像这样在循环中传递它:

import groovy.json.JsonSlurper

def nexusURL = "http://localhost:8081/service/rest/beta/search?repository=myrepo&format=raw"

// Make request to Nexus API and get continuationToken
def nexusAPIResponse = new URL(nexusURL).text;
def nexusAPISlurper = new JsonSlurper()
def nexusAPIResponseSlurper = nexusAPISlurper.parseText(nexusAPIResponse)
def continuationToken = nexusAPIResponseSlurper.continuationToken
  println "continuationToken: "+continuationToken
  println 'nexusAPIResponseSlurper: '+nexusAPIResponseSlurper.items.name.size()
  println "--------------------------------"

  try {
    while(continuationToken != 'null'){
    // Make request to Nexus API with continuationToken
    def nexusAPIResponseWithToken = new URL("${nexusURL}&continuationToken=${continuationToken}").text;
    def nexusAPISlurperWithToken = new JsonSlurper()
    def nexusAPIResponseSlurperWithToken = nexusAPISlurperWithToken.parseText(nexusAPIResponseWithToken)
      continuationToken = nexusAPIResponseSlurperWithToken.continuationToken
      nexusAPIResponseSlurperWithToken.items.name.each {
        println it
      }
    }
  }
  catch(IOException ex) {
    println "--------------------------------"
  }

使用集成分页

https://help.sonatype.com/repomanager3/rest-and-integration-api/pagination

您获取结果的第一页,然后检查 continuationToken

{
  "items" : [
    ...
  ],
  "continuationToken" : "88491cd1d185dd136f143f20c4e7d50c"
}

如果它不为空,只需添加即可获取更多信息:

&continuationToken=continuationToken

据您所知,Groovy 使用 JsonSlurper 是实现此目的的好方法