Zoeken

Het is mogelijk om te zoeken naar pakketten die beschikbaar zijn op een pakketbron met behulp van de V3-API. De resource die wordt gebruikt om te zoeken, is de SearchQueryService resource die in de serviceindex wordt gevonden.

Versioning

De volgende @type waarden worden gebruikt:

Waarde @type Aantekeningen
SearchQueryService De eerste release
SearchQueryService/3.0.0-beta Alias van SearchQueryService
SearchQueryService/3.0.0-rc Alias van SearchQueryService
SearchQueryService/3.5.0 Bevat ondersteuning voor packageType queryparameter

SearchQueryService/3.5.0

In deze versie wordt ondersteuning geïntroduceerd voor de packageType queryparameter en de packageTypes antwoordeigenschap, zodat u kunt filteren op door de auteur gedefinieerde pakkettypen. Het is volledig achterwaarts compatibel met query's naar SearchQueryService.

Basis-URL

De basis-URL voor de volgende API is de waarde van de @id eigenschap die is gekoppeld aan een van de bovengenoemde resourcewaarden @type . In het volgende document wordt de basis-URL {@id} van de tijdelijke aanduiding gebruikt. De basis-URL kan worden gewijzigd op basis van implementatie- of infrastructuurwijzigingen binnen de pakketbron, zodat deze dynamisch moet worden opgehaald uit de service-index door de clientsoftware.

HTTP-methoden

Alle URL's in de registratieresource ondersteunen de HTTP-methoden GET en HEAD.

Pakketten zoeken

Met de zoek-API kan een client een query uitvoeren op een pagina met pakketten die overeenkomen met een opgegeven zoekquery. De interpretatie van de zoekquery (bijvoorbeeld de tokenisatie van de zoektermen) wordt bepaald door de server-implementatie, maar de algemene verwachting is dat de zoekquery wordt gebruikt voor overeenkomende pakket-id's, titels, beschrijvingen en tags. Andere metagegevensvelden van pakketten kunnen ook worden overwogen.

Een niet-vermeld pakket mag nooit worden weergegeven in zoekresultaten.

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

Aanvraagparameters

Naam In Type Required Aantekeningen
q URL tekenreeks no De zoektermen die moeten worden gebruikt om pakketten te filteren
skip URL geheel getal no Het aantal resultaten dat moet worden overgeslagen voor paginering
take URL geheel getal no Het aantal te retourneren resultaten voor paginering
prerelease URL boolean no trueof false bepalen of voorlopige pakketten moeten worden opgenomen
semVerLevel URL tekenreeks no Een SemVer 1.0.0-versietekenreeks
pakkettype URL tekenreeks no Het pakkettype dat moet worden gebruikt om pakketten te filteren (toegevoegd in SearchQueryService/3.5.0)

De zoekquery q wordt geparseerd op een manier die wordt gedefinieerd door de serverimplementatie. nuget.org ondersteunt basisfiltering op verschillende velden. Als er geen q is opgegeven, moeten alle pakketten worden geretourneerd, binnen de grenzen die worden opgelegd door overslaan en nemen. Hiermee schakelt u het tabblad Bladeren in de NuGet-Visual Studio-ervaring in.

De skip parameter is standaard ingesteld op 0.

De take parameter moet een geheel getal groter dan nul zijn. De server-implementatie kan een maximumwaarde opleggen.

Note

nuget.org beperkt de skip parameter tot 3.000 en de take parameter tot 1.000.

Als prerelease dit niet is opgegeven, worden voorlopige pakketten uitgesloten.

De semVerLevel queryparameter wordt gebruikt voor aanmelding bij SemVer 2.0.0-pakketten. Als deze queryparameter wordt uitgesloten, worden alleen pakketten met compatibele versies van SemVer 1.0.0 geretourneerd (met de standaard NuGet-versiebeheerfouten , zoals versietekenreeksen met vier gehele getallen). Indien semVerLevel=2.0.0 opgegeven, worden zowel SemVer 1.0.0 als SemVer 2.0.0 compatibele pakketten geretourneerd. Zie de ondersteuning van SemVer 2.0.0 voor nuget.org voor meer informatie.

De packageType parameter wordt gebruikt om de zoekresultaten verder te filteren op alleen pakketten met ten minste één pakkettype dat overeenkomt met de naam van het pakkettype. Als het opgegeven pakkettype geen geldig pakkettype is zoals gedefinieerd in het document Pakkettype, wordt een leeg resultaat geretourneerd. Als het opgegeven pakkettype leeg is, wordt er geen filter toegepast. Met andere woorden, het doorgeven van geen waarde aan de parameter packageType gedraagt zich alsof de parameter niet is doorgegeven.

Antwoord

Het antwoord is een JSON-document met maximaal take zoekresultaten. Zoekresultaten worden gegroepeerd op pakket-id.

Het hoofd-JSON-object heeft de volgende eigenschappen:

Naam Type Required Aantekeningen
totalHits geheel getal yes Het totale aantal overeenkomsten, negeren skip en take
Gegevens reeks van objecten yes De zoekresultaten die overeenkomen met de aanvraag

Zoekresultaat

Elk item in de data matrix is een JSON-object dat bestaat uit een groep pakketversies die dezelfde pakket-id delen. Het object heeft de volgende eigenschappen:

Naam Type Required Aantekeningen
id tekenreeks yes De id van het overeenkomende pakket
version tekenreeks yes De volledige SemVer 2.0.0-versietekenreeks van het pakket (kan buildmetagegevens bevatten)
beschrijving tekenreeks no
afschaffing Voorwerp no De afschaffing die is gekoppeld aan de nieuwste pakketversie
versions reeks van objecten yes Alle versies van het pakket die overeenkomen met de prerelease parameter
authors tekenreeks of matrix met tekenreeksen no
iconUrl tekenreeks no
licenseUrl tekenreeks no
Eigenaren tekenreeks of matrix met tekenreeksen no Een tekenreeks vertegenwoordigt de gebruikersnaam van één eigenaar
projectUrl tekenreeks no
registratie tekenreeks no De absolute URL naar de gekoppelde registratie-index
samenvatting tekenreeks no
tags tekenreeks of matrix met tekenreeksen no
title tekenreeks no
totalDownloads geheel getal no Deze waarde kan worden afgeleid door de som van downloads in de versions matrix
Geverifieerd boolean no Een JSON-booleaanse waarde die aangeeft of het pakket is geverifieerd
Kwetsbaarheden reeks van objecten no De bekende beveiligingsproblemen die zijn gekoppeld aan de nieuwste pakketversie
packageTypes reeks van objecten yes De pakkettypen die zijn gedefinieerd door de auteur van het pakket (toegevoegd in SearchQueryService/3.5.0)

Op nuget.org is een geverifieerd pakket een pakket-id die overeenkomt met een gereserveerd id-voorvoegsel en eigendom is van een van de eigenaren van het gereserveerde voorvoegsel. Zie de documentatie over reservering voor id-voorvoegsels voor meer informatie.

De metagegevens in het zoekresultaatobject zijn afkomstig uit de meest recente pakketversie. Elk item in de versions matrix is een JSON-object met de volgende eigenschappen:

Naam Type Required Aantekeningen
@id tekenreeks yes De absolute URL naar het gekoppelde registratieblad
version tekenreeks yes De volledige SemVer 2.0.0-versietekenreeks van het pakket (kan buildmetagegevens bevatten)
Downloads geheel getal yes Het aantal downloads voor deze specifieke pakketversie

Uitfasering van pakket

Het deprecation-object heeft de volgende eigenschappen:

Naam Type Required Aantekeningen
Redenen reeks van tekenreeksen yes De redenen waarom het pakket is afgeschaft
message tekenreeks no Aanvullende informatie over de afschaffing
alternatePackage Voorwerp no Het alternatieve pakket dat in plaats daarvan moet worden gebruikt

De reasons matrix bevat ten minste één van de waarden die worden beschreven in pakketafschaffen.

Het alternatePackage-object heeft de volgende eigenschappen:

Naam Type Required Aantekeningen
id tekenreeks yes De id van het alternatieve pakket
range tekenreeks no Het toegestane versiebereik of * als er een versie is toegestaan

Kwetsbaarheden

Elk item in de vulnerabilities matrix is een JSON-object met de volgende eigenschappen:

Naam Type Required Aantekeningen
advisoryUrl tekenreeks yes De URL van het beveiligingsadvies voor het pakket
severity geheel getal yes De ernst van het advies: 0 = Laag, 1 = Gemiddeld, 2 = Hoog en 3 = Kritiek

De matrix is leeg wanneer de meest recente pakketversie geen bekende beveiligingsproblemen heeft.

De packageTypes matrix bestaat altijd uit ten minste één (1) item. Pakkettype voor een bepaalde pakket-id wordt beschouwd als de pakkettypen die zijn gedefinieerd door de nieuwste versie van het pakket met betrekking tot de andere zoekparameters. Elk item in de packageTypes matrix is een JSON-object met de volgende eigenschappen:

Naam Type Required Aantekeningen
naam tekenreeks yes De naam van het pakkettype.

Voorbeeldaanvraag

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

Zorg ervoor dat u de basis-URL (https://search-sample.nuget.org/query in dit voorbeeld) ophaalt uit de serviceindex, zoals vermeld in de sectie basis-URL .

Voorbeeldantwoord

{
  "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"
        }
      ]
    }
  ]
}