Search

Istnieje możliwość wyszukiwania pakietów dostępnych w źródle pakietu przy użyciu interfejsu API w wersji 3. Zasób używany do wyszukiwania to zasób znaleziony SearchQueryService w indeksie usługi.

Wersjonowanie

Używane są następujące @type wartości:

Wartość: @type Notes
SearchQueryService Wersja początkowa
SearchQueryService/3.0.0-beta Alias of SearchQueryService
SearchQueryService/3.0.0-rc Alias of SearchQueryService
SearchQueryService/3.5.0 Obejmuje obsługę parametru packageType zapytania

SearchQueryService/3.5.0

Ta wersja wprowadza obsługę parametru packageType zapytania i packageTypes właściwości odpowiedzi, umożliwiając filtrowanie według zdefiniowanych typów pakietów autorów. Jest ona w pełni zgodna z poprzednimi wersjami zapytań do SearchQueryService.

Podstawowy adres URL

Podstawowy adres URL następującego interfejsu API to wartość @id właściwości skojarzonej z jedną z wyżej wymienionych wartości zasobów @type . W poniższym dokumencie zostanie użyty podstawowy adres URL {@id} symbolu zastępczego. Podstawowy adres URL może ulec zmianie na podstawie implementacji lub zmian infrastruktury w źródle pakietu, dlatego musi być dynamicznie pobierany z indeksu usługi przez oprogramowanie klienckie.

Metody HTTP

Wszystkie adresy URL znalezione w zasobie rejestracji obsługują metody GET HTTP i HEAD.

Wyszukiwanie pakietów

Interfejs API wyszukiwania umożliwia klientowi wykonywanie zapytań dotyczących strony pakietów pasujących do określonego zapytania wyszukiwania. Interpretacja zapytania wyszukiwania (np. tokenizacja terminów wyszukiwania) jest określana przez implementację serwera, ale ogólne oczekiwania polegają na tym, że zapytanie wyszukiwania jest używane do dopasowywania identyfikatorów pakietów, tytułów, opisów i tagów. Można również rozważyć inne pola metadanych pakietu.

Pakiet nie wymieniony nigdy nie powinien być wyświetlany w wynikach wyszukiwania.

GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL}&packageType={PACKAGETYPE}

Parametry żądania

Name W Typ Wymagane Notes
q adres URL ciąg no Terminy wyszukiwania używane do filtrowania pakietów
pominąć adres URL liczba całkowita no Liczba wyników do pominięcia w przypadku stronicowania
wziąć adres URL liczba całkowita no Liczba wyników do zwrócenia w przypadku stronicowania
w wersji wstępnej adres URL boolean no true lub false określenie, czy należy uwzględnić pakiety wersji wstępnej
semVerLevel adres URL ciąg no Ciąg wersji SemVer 1.0.0
typ pakietu adres URL ciąg no Typ pakietu używany do filtrowania pakietów (dodany w SearchQueryService/3.5.0pliku )

Zapytanie q wyszukiwania jest analizowane w sposób zdefiniowany przez implementację serwera. nuget.org obsługuje podstawowe filtrowanie w różnych polach. Jeśli nie q zostanie podany, należy zwrócić wszystkie pakiety w granicach narzuconych przez pomijanie i przejmowanie. Spowoduje to włączenie karty "Przeglądaj" w środowisku Visual Studio NuGet.

Wartość domyślna parametru skip to 0.

Parametr take powinien być liczbą całkowitą większą niż zero. Implementacja serwera może narzucić maksymalną wartość.

Note

nuget.org ogranicza skip parametr do 3000, a take parametr do 1000.

Jeśli prerelease nie zostanie podana, pakiety wersji wstępnej zostaną wykluczone.

Parametr semVerLevel zapytania służy do wyrażenia zgody na pakiety SemVer 2.0.0. Jeśli ten parametr zapytania zostanie wykluczony, zostaną zwrócone tylko pakiety z zgodnymi wersjami SemVer 1.0.0 (ze standardowymi zastrzeżeniami obsługi wersji NuGet , takimi jak ciągi wersji z 4 liczbami całkowitymi). Jeśli semVerLevel=2.0.0 zostanie podana wartość, zostaną zwrócone pakiety zgodne z standardem SemVer 1.0.0 i SemVer 2.0.0. Aby uzyskać więcej informacji, zobacz obsługę programu SemVer 2.0.0 w celu uzyskania nuget.org .

Parametr packageType służy do dalszego filtrowania wyników wyszukiwania tylko do pakietów, które mają co najmniej jeden typ pakietu pasujący do nazwy typu pakietu. Jeśli podany typ pakietu nie jest prawidłowym typem pakietu zdefiniowanym przez dokument Typ pakietu, zostanie zwrócony pusty wynik. Jeśli podany typ pakietu jest pusty, nie zostanie zastosowany żaden filtr. Innymi słowy przekazywanie żadnej wartości do parametru packageType będzie zachowywać się tak, jakby parametr nie został przekazany.

Odpowiedź

Odpowiedź to dokument JSON zawierający take wyniki wyszukiwania. Wyniki wyszukiwania są grupowane według identyfikatora pakietu.

Główny obiekt JSON ma następujące właściwości:

Name Typ Wymagane Notes
totalHits liczba całkowita yes Łączna liczba dopasowań, lekceważenie skip i take
dane tablica obiektów yes Wyniki wyszukiwania dopasowane przez żądanie

Wynik wyszukiwania

Każdy element w tablicy data jest obiektem JSON składającym się z grupy wersji pakietów współużytkujących ten sam identyfikator pakietu. Obiekt ma następujące właściwości:

Name Typ Wymagane Notes
id ciąg yes Identyfikator dopasowanego pakietu
wersja ciąg yes Pełny ciąg wersji SemVer 2.0.0 pakietu (może zawierać metadane kompilacji)
Opis ciąg no
Wycofanie obiekt no Wycofanie skojarzone z najnowszą wersją pakietu
versions tablica obiektów yes Wszystkie wersje pakietu pasujące do parametru prerelease
authors ciąg lub tablica ciągów no
iconUrl (adres URL ikony) ciąg no
licenseUrl ciąg no
Właścicieli ciąg lub tablica ciągów no Ciąg reprezentuje nazwę użytkownika pojedynczego właściciela
projectUrl ciąg no
rejestracja ciąg no Bezwzględny adres URL skojarzonego indeksu rejestracji
podsumowanie ciąg no
tags ciąg lub tablica ciągów no
title ciąg no
totalDownloads liczba całkowita no Tę wartość można wywnioskować sumą pobrań w tablicy versions
Sprawdzonych boolean no Wartość logiczna JSON wskazująca, czy pakiet został zweryfikowany
Luki tablica obiektów no Znane luki w zabezpieczeniach skojarzone z najnowszą wersją pakietu
packageTypes tablica obiektów yes Typy pakietów zdefiniowane przez autora pakietu (dodane w SearchQueryService/3.5.0pliku )

W nuget.org zweryfikowany pakiet jest pakietem, który ma identyfikator pakietu pasujący do prefiksu identyfikatora zarezerwowanego i należący do jednego z właścicieli prefiksu zarezerwowanego. Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą rezerwacji prefiksów identyfikatorów.

Metadane zawarte w obiekcie wyników wyszukiwania są pobierane z najnowszej wersji pakietu. Każdy element w tablicy versions jest obiektem JSON o następujących właściwościach:

Name Typ Wymagane Notes
@id ciąg yes Bezwzględny adres URL skojarzonego liścia rejestracji
wersja ciąg yes Pełny ciąg wersji SemVer 2.0.0 pakietu (może zawierać metadane kompilacji)
Pobieranie liczba całkowita yes Liczba pobrań dla tej konkretnej wersji pakietu

Wycofanie pakietu

Obiekt deprecation ma następujące właściwości:

Name Typ Wymagane Notes
Powodów tablica ciągów yes Przyczyny, dla których pakiet został przestarzały
komunikat ciąg no Dodatkowe szczegóły dotyczące wycofywania
alternatePackage obiekt no Alternatywny pakiet do użycia

Tablica reasons zawiera co najmniej jedną z wartości udokumentowanych w artykule Wycofywanie pakietu.

Obiekt alternatePackage ma następujące właściwości:

Name Typ Wymagane Notes
id ciąg yes Identyfikator pakietu alternatywnego
zakres ciąg no Dozwolony zakres wersji lub * dozwolona wersja

luki bezpieczeństwa

Każdy element w tablicy vulnerabilities jest obiektem JSON o następujących właściwościach:

Name Typ Wymagane Notes
advisoryUrl ciąg yes Adres URL biuletynu zabezpieczeń pakietu
severity liczba całkowita yes Ważność porady: 0 = Niska, 1 = Umiarkowana, 2 = Wysoka i 3 = Krytyczne

Tablica jest pusta, gdy najnowsza wersja pakietu nie ma znanych luk w zabezpieczeniach.

Tablica packageTypes zawsze będzie składać się z co najmniej jednego (1) elementu. Typ pakietu dla danego identyfikatora pakietu jest uważany za typy pakietów zdefiniowane przez najnowszą wersję pakietu w odniesieniu do innych parametrów wyszukiwania. Każdy element w tablicy packageTypes jest obiektem JSON o następujących właściwościach:

Name Typ Wymagane Notes
nazwa ciąg yes Nazwa typu pakietu.

Przykładowe żądanie

GET https://search-sample.nuget.org/query?q=NuGet.Versioning&prerelease=false&semVerLevel=2.0.0

Pamiętaj, aby pobrać podstawowy adres URL (https://search-sample.nuget.org/query w tym przykładzie) z indeksu usługi, jak wspomniano w sekcji podstawowego adresu URL .

Przykładowa odpowiedź

{
  "totalHits": 2,
  "data": [
    {
      "registration": "https://api.nuget.org/v3/registration-sample/nuget.versioning/index.json",
      "id": "NuGet.Versioning",
      "version": "4.4.0",
      "description": "NuGet's implementation of Semantic Versioning.",
      "summary": "",
      "title": "NuGet.Versioning",
      "licenseUrl": "https://raw.githubusercontent.com/NuGet/NuGet.Client/dev/LICENSE.txt",
      "tags": [ "semver", "semantic", "versioning" ],
      "authors": [ "NuGet" ],
      "totalDownloads": 141896,
      "verified": true,
      "vulnerabilities": [],
      "packageTypes": [
        {
          "name": "Dependency"
        }
      ],
      "versions": [
        {
          "version": "3.3.0",
          "downloads": 50343,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/3.3.0.json"
        },
        {
          "version": "3.4.3",
          "downloads": 27932,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/3.4.3.json"
        },
        {
          "version": "4.0.0",
          "downloads": 63004,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/4.0.0.json"
        },
        {
          "version": "4.4.0",
          "downloads": 617,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/4.4.0.json"
        }
      ]
    },
    {
      "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/index.json",
      "@type": "Package",
      "registration": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/index.json",
      "id": "Nerdbank.GitVersioning",
      "version": "2.0.41",
      "description": "Stamps your assemblies with semver 2.0 compliant git commit specific version information and provides NuGet versioning information as well.",
      "summary": "Stamps your assemblies with semver 2.0 compliant git commit specific version information and provides NuGet versioning information as well.",
      "title": "Nerdbank.GitVersioning",
      "licenseUrl": "https://raw.githubusercontent.com/AArnott/Nerdbank.GitVersioning/ed547462f7/LICENSE.txt",
      "projectUrl": "http://github.com/aarnott/Nerdbank.GitVersioning",
      "tags": [ "git", "commit", "versioning", "version", "assemblyinfo" ],
      "authors": [ "Andrew Arnott" ],
      "totalDownloads": 11906,
      "verified": false,
      "vulnerabilities": [],
      "versions": [
        {
          "version": "1.6.35",
          "downloads": 10229,
          "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/1.6.35.json"
        },
        {
          "version": "2.0.41",
          "downloads": 1677,
          "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/2.0.41.json"
        }
      ]
    }
  ]
}