NuGet Server-API
De NuGet Server-API is een set HTTP-eindpunten die kunnen worden gebruikt voor het downloaden van pakketten, het ophalen van metagegevens, het publiceren van nieuwe pakketten en het uitvoeren van de meeste andere bewerkingen die beschikbaar zijn in de officiële NuGet-clients.
Deze API wordt gebruikt door de NuGet-client in Visual Studio, nuget.exeen de .NET CLI om NuGet-bewerkingen uit te voeren, zoals dotnet restore
, zoeken in de Visual Studio-gebruikersinterface en nuget.exe push
.
Houd er rekening mee dat nuget.org aanvullende vereisten heeft die niet worden afgedwongen door andere pakketbronnen. Deze verschillen worden gedocumenteerd door de nuget.org Protocollen.
Zie het tools.json-eindpunt voor een eenvoudige opsomming en het downloaden van beschikbare nuget.exe versies.
Als u een NuGet-pakketopslagplaats implementeert, raadpleegt u ook de implementatiehandleiding voor aanvullende vereisten en aanbevelingen.
Service-index
Het toegangspunt voor de API is een JSON-document op een bekende locatie. Dit document wordt de service-indexgenoemd. De locatie van de service-index voor nuget.org is https://api.nuget.org/v3/index.json
.
Dit JSON-document bevat een lijst met resources die verschillende functionaliteit bieden en voldoen aan verschillende use cases.
Clients die de API ondersteunen, moeten een of meer van deze serviceindex-URL's accepteren als het middel om verbinding te maken met de respectieve pakketbronnen.
Zie api-verwijzingvoor meer informatie over de serviceindex.
Versiebeheer
De API is versie 3 van het HTTP-protocol van NuGet. Dit protocol wordt ook wel 'de V3-API' genoemd. Deze referentiedocumenten verwijzen naar deze versie van het protocol als 'de API'.
De schemaversie van de serviceindex wordt aangegeven door de eigenschap version
in de serviceindex. De API vereist dat de versietekenreeks een groot versienummer van 3
heeft. Als er niet-belangrijke wijzigingen worden aangebracht in het indexschema van de service, wordt de secundaire versie van de versietekenreeks verhoogd.
Oudere clients (zoals nuget.exe 2.x) bieden geen ondersteuning voor de V3-API en ondersteunen alleen de oudere V2-API, die hier niet wordt beschreven.
De NuGet V3-API heet als zodanig omdat dit de opvolger is van de V2-API, het OData-protocol dat is geïmplementeerd door de 2.x-versie van de officiële NuGet-client. De V3-API werd eerst ondersteund door de 3.0-versie van de officiële NuGet-client en is nog steeds de nieuwste primaire protocolversie die wordt ondersteund door de NuGet-client, 4.0 en hoger.
Niet-belangrijke protocolwijzigingen zijn aangebracht in de API sinds deze voor het eerst werd uitgebracht.
Resources en schema
In de service-index worden verschillende resources beschreven. De huidige set ondersteunde resources is als volgt:
Resourcenaam | Vereist | Beschrijving |
---|---|---|
Catalogus | Nee | Volledige record van alle pakketevenementen. |
PackageBaseAddress- | ja | Pakketinhoud ophalen (.nupkg). |
PackageDetailsUriTemplate- | Nee | Maak een URL voor toegang tot een webpagina met pakketdetails. |
PackagePublish | ja | Pakketten pushen en verwijderen (of uit de lijst verwijderen). |
ReadmeUriTemplate- | Nee | Maak een URL voor toegang tot het LEESMIJ-bestand van een pakket. |
RegistrationsBaseUrl- | ja | Haal pakketmetagegevens op. |
ReportAbuseUriTemplate- | Nee | Maak een URL voor toegang tot een webpagina met misbruik van rapporten. |
RepositorySignatures | Nee | Certificaten ophalen die worden gebruikt voor ondertekening van opslagplaatsen. |
SearchAutocompleteService | Nee | Ontdek pakket-id's en versies door middel van subtekenreeksen. |
SearchQueryService | ja | Filteren en zoeken naar pakketten op trefwoord. |
SymbolPackagePublish- | Nee | Symboolpakketten pushen. |
VulnerabilityInfo- | Nee | Pakketten met bekende beveiligingsproblemen. |
Over het algemeen worden alle niet-binaire gegevens die worden geretourneerd door een API-resource geserialiseerd met behulp van JSON. Het antwoordschema dat door elke resource in de serviceindex wordt geretourneerd, wordt afzonderlijk gedefinieerd voor die resource. Zie de bovenstaande onderwerpen voor meer informatie over elke resource.
In de toekomst, naarmate het protocol zich ontwikkelt, kunnen nieuwe eigenschappen worden toegevoegd aan JSON-antwoorden. Om de client toekomstbestendig te maken, mag de implementatie er niet van uitgaan dat het antwoordschema definitief is en geen extra gegevens kan bevatten. Alle eigenschappen die de implementatie niet begrijpt, moeten worden genegeerd.
Notitie
Wanneer een bron geen SearchAutocompleteService
gedrag voor automatisch aanvullen niet correct moet worden uitgeschakeld. Wanneer ReportAbuseUriTemplate
niet is geïmplementeerd, valt de officiële NuGet-client terug op de misbruik-URL van nuget.org (bijgehouden door NuGet/Home#4924). Andere clients kunnen ervoor kiezen om simpelweg geen misbruik-URL voor het rapport aan de gebruiker weer te geven.
Niet-gedocumenteerde resources op nuget.org
De V3-serviceindex op nuget.org bevat enkele resources die hierboven niet zijn gedocumenteerd. Er zijn enkele redenen om een resource niet te documenteren.
Eerst documenteer we geen resources die worden gebruikt als implementatiedetails van nuget.org. De SearchGalleryQueryService
valt in deze categorie.
NuGetGallery deze resource gebruikt om sommige V2-query's (OData) te delegeren aan onze zoekindex in plaats van de database te gebruiken. Deze resource is geïntroduceerd om schaalbaarheidsredenen en is niet bedoeld voor extern gebruik.
Ten tweede documenteer we geen resources die nooit zijn verzonden in een RTM-versie van de officiële client.
PackageDisplayMetadataUriTemplate
en PackageVersionDisplayMetadataUriTemplate
vallen in deze categorie.
Ten derde documenteert u geen resources die nauw zijn gekoppeld aan het V2-protocol, dat zelf opzettelijk niet is gedocumenteerd. De LegacyGallery
resource valt in deze categorie. Met deze resource kan een V3-serviceindex verwijzen naar een bijbehorende V2-bron-URL. Deze resource ondersteunt de nuget.exe list
.
Als een resource hier niet wordt gedocumenteerd, we sterk raden u aan deze resources niet afhankelijk te maken. We kunnen het gedrag van deze niet-gedocumenteerde resources verwijderen of wijzigen, waardoor uw implementatie op onverwachte manieren kan worden onderbroken.
Tijdstempels
Alle tijdstempels die door de API worden geretourneerd, zijn UTC of worden op een andere manier opgegeven met behulp van ISO 8601 weergave.
HTTP-methoden
Werkwoord | Gebruiken |
---|---|
TOEVOEGEN | Voert een alleen-lezenbewerking uit, meestal worden gegevens opgehaald. |
HOOFD | Haalt de antwoordheaders op voor de bijbehorende GET aanvraag. |
ZETTEN | Hiermee maakt u een resource die niet bestaat of, als deze bestaat, wordt deze bijgewerkt. Sommige resources ondersteunen mogelijk geen update. |
VERWIJDEREN | Hiermee verwijdert u een resource of verwijdert u deze uit de lijst. |
HTTP-statuscodes
Code | Beschrijving |
---|---|
200 | Succes, en er is een antwoordtekst. |
201 | Geslaagd en de resource is gemaakt. |
202 | Geslaagd, de aanvraag is geaccepteerd, maar sommige werkzaamheden zijn mogelijk nog steeds onvolledig en asynchroon voltooid. |
204 | Succes, maar er is geen antwoordtekst. |
301 | Een permanente omleiding. |
302 | Een tijdelijke omleiding. |
400 | De parameters in de URL of in de aanvraagbody zijn niet geldig. |
401 | De opgegeven referenties zijn ongeldig. |
403 | De actie is niet toegestaan op basis van de opgegeven referenties. |
404 | De aangevraagde resource bestaat niet. |
409 | De aanvraag conflicteert met een bestaande resource. |
500 | Er is een onverwachte fout opgetreden in de service. |
503 | De service is tijdelijk niet beschikbaar. |
Elke GET
aanvraag naar een API-eindpunt kan een HTTP-omleiding (301 of 302) retourneren. Clients moeten dergelijke omleidingen correct verwerken door de Location
header te observeren en een volgende GET
uit te geven. Documentatie over specifieke eindpunten wordt niet expliciet aangeroepen waar omleidingen kunnen worden gebruikt.
In het geval van een statuscode op 500 niveau kan de client een redelijk mechanisme voor opnieuw proberen implementeren. De officiële NuGet-client probeert drie keer opnieuw wanneer er statuscode op 500-niveau of TCP/DNS-fout optreedt.
HTTP-aanvraagheaders
Naam | Beschrijving |
---|---|
X-NuGet-ApiKey | Zie PackagePublish resource vereist voor pushen en verwijderen |
X-NuGet-Client-Version |
afgeschafte en vervangen door X-NuGet-Protocol-Version |
X-NuGet-Protocol-Version | Zie nuget.org protocollen in bepaalde gevallen alleen voor nuget.org |
X-NuGet-Session-Id | Optionele. NuGet-clients v4.7+ identificeren HTTP-aanvragen die deel uitmaken van dezelfde NuGet-clientsessie. |
De X-NuGet-Session-Id
heeft één waarde voor alle bewerkingen die betrekking hebben op één herstelbewerking in PackageReference
. Voor andere scenario's, zoals automatisch aanvullen en packages.config
herstellen, kunnen er verschillende sessie-id's zijn vanwege de manier waarop de code wordt gerekend.
Authenticatie
Verificatie wordt overgelaten aan de implementatie van de pakketbron om te definiëren. Voor nuget.org vereist alleen de PackagePublish
-resource verificatie via een speciale API-sleutelheader. Zie PackagePublish
resource voor meer informatie.