Как перечислить все компоненты в хранилище Nexus с помощью API? - PullRequest
0 голосов
/ 27 марта 2020

Я использую репозиторий формата RAW в моем Nexus под названием myrepo. Я загружаю файлы, такие как .tar.gz, zip, exe ... et c. В этом хранилище у меня много подпапок и файлов, и теперь я хочу перечислить все файлы с помощью API.

. Я использую это выполнение, сгенерированное пользовательским интерфейсом Nexus:

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?

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Используйте встроенную пагинацию 1011 *

если он не равен NULL, есть еще что-то, что можно получить, просто добавив:

& continueationToken = continueationToken

на ваше усмотрение, Groovy с JsonSlurper - отличный способ сделай это

0 голосов
/ 30 марта 2020

Мне удается сделать это с помощью groovy script

В скрипте я получаю токен и передаю его в l oop следующим образом:

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 "--------------------------------"
  }
...