Contenu de package

Il est possible de générer une URL pour récupérer le contenu d’un package arbitraire (le fichier .nupkg) à l’aide de l’API V3. La ressource utilisée pour récupérer le contenu du package est la ressource PackageBaseAddress trouvée dans l’index de service. Cette ressource permet également la découverte de toutes les versions d’un package, listées ou non répertoriées.

Cette ressource est communément appelée « adresse de base de package » ou « conteneur plat ».

Contrôle de version

La valeur suivante @type est utilisée :

Valeur @type Notes
PackageBaseAddress/3.0.0 La version initiale

URL de base

L’URL de base pour les API suivante est la valeur de la propriété @id associée à l’une une valeur de ressource @type mentionnée ci-dessus. Dans le document suivant, l’URL {@id} de base de l’espace réservé sera utilisée. L’URL de base peut changer en fonction de l’implémentation ou des modifications d’infrastructure dans la source du package. Elle doit donc être récupérée dynamiquement de l’index de service par le logiciel client.

Méthodes HTTP

Toutes les URL trouvées dans la ressource de contenu de package prennent en charge les méthodes HTTP GET et HEAD.

Énumérer les versions du package

Si le client connaît un ID de package et souhaite découvrir quelles versions de package la source du package est disponible, le client peut construire une URL prévisible pour énumérer toutes les versions du package. Cette liste est destinée à être une « liste d’annuaires » pour l’API de contenu du package mentionnée ci-dessous.

Remarque

Cette liste contient les versions de package répertoriées et retirées de la liste.

GET {@id}/{LOWER_ID}/index.json

Paramètres de la demande

Nom Dans Type Requise Notes
LOWER_ID URL string Oui L’ID du package, en minuscules

La valeur LOWER_ID est l’ID de package souhaité en minuscules à l’aide des règles implémentées par la méthode de NET System.String.ToLowerInvariant().

Response

Si la source du package n’a aucune version de l’ID de package fourni, un code de statut 404 est retourné.

Si la source du package comporte une ou plusieurs versions, un code d’état 200 est retourné. Le corps de la réponse est un objet JSON avec la propriété suivante :

Nom Type Requise Notes
versions tableau de chaînes Oui Les versions disponibles.

Les chaînes du tableau versions sont toutes des chaînes de version NuGet normalisées en minuscules. Les chaînes de version ne contiennent aucune métadonnée de version SemVer 2.0.0.

L’intention est que les chaînes de version trouvées dans ce tableau peuvent être utilisées en détail pour les jetons LOWER_VERSION trouvés dans les points de terminaison suivants.

Exemple de requête

GET https://api.nuget.org/v3-flatcontainer/owin/index.json

Veillez à récupérer l’URL de base (https://api.nuget.org/v3-flatcontainer/ dans cet exemple) à partir de l’index de service, comme indiqué dans la section URL de base.

Exemple de réponse

{
  "versions": [
    "0.5.0",
    "0.7.0",
    "0.11.0",
    "0.12.0",
    "0.14.0",
    "1.0.0"
  ]
}

Télécharger le contenu du package (.nupkg)

Si le client connaît un ID de package et une version et souhaite télécharger le contenu du package, il doit uniquement construire l’URL suivante :

GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.{LOWER_VERSION}.nupkg

Paramètres de la demande

Nom Dans Type Requise Notes
LOWER_ID URL string Oui L’ID du package, en minuscules
LOWER_VERSION URL string Oui La version du package, normalisée et en minuscules

À la fois LOWER_ID et LOWER_VERSION sont en minuscules à l’aide des règles implémentées par . NET méthode System.String.ToLowerInvariant().

La LOWER_VERSION est la version de package souhaitée normalisée à l’aide des règles de normalisation de version de NuGet. Cela signifie que les métadonnées de build autorisées par la spécification SemVer 2.0.0 doivent être exclues dans ce cas.

Corps de réponse

Si le package existe sur la source du package, un code d’état 200 est retourné. Le corps de la réponse sera le contenu du package lui-même.

Si le package n’existe pas sur la source du package, un code de statut 404 est retourné.

Exemple de requête

GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/9.0.1/newtonsoft.json.9.0.1.nupkg

Veillez à récupérer l’URL de base (https://api.nuget.org/v3-flatcontainer/ dans cet exemple) à partir de l’index de service, comme indiqué dans la section URL de base.

Exemple de réponse

Flux binaire qui est le fichier .nupkg pour Newtonsoft.Json 9.0.1.

Télécharger le manifeste du package (.nuspec)

Si le client connaît un ID de package et une version et souhaite télécharger le manifeste du package, il doit uniquement construire l’URL suivante :

GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.nuspec

Paramètres de la demande

Nom Dans Type Requise Notes
LOWER_ID URL string Oui L’ID du package, en minuscules
LOWER_VERSION URL string Oui La version du package, normalisée et en minuscules

À la fois LOWER_ID et LOWER_VERSION sont en minuscules à l’aide des règles implémentées par la méthode System.String.ToLowerInvariant(). NET.

La LOWER_VERSION est la version de package souhaitée normalisée à l’aide des règles de normalisation de version de NuGet. Cela signifie que les métadonnées de build autorisées par la spécification SemVer 2.0.0 doivent être exclues dans ce cas.

Corps de réponse

Si le package existe sur la source du package, un code d’état 200 est retourné. Le corps de la réponse sera le manifeste du package, qui est le .nuspec contenu dans le fichier .nupkg correspondant. Le .nuspec est un document XML.

Si le package n’existe pas sur la source du package, un code de statut 404 est retourné.

Exemple de requête

GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/6.0.4/newtonsoft.json.nuspec

Veillez à récupérer l’URL de base (https://api.nuget.org/v3-flatcontainer/ dans cet exemple) à partir de l’index de service, comme indiqué dans la section URL de base.

Exemple de réponse

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>Newtonsoft.Json</id>
    <version>6.0.4</version>
    <title>Json.NET</title>
    <authors>James Newton-King</authors>
    <owners>James Newton-King</owners>
    <licenseUrl>https://raw.github.com/JamesNK/Newtonsoft.Json/master/LICENSE.md</licenseUrl>
    <projectUrl>http://james.newtonking.com/json</projectUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Json.NET is a popular high-performance JSON framework for .NET</description>
    <language>en-US</language>
    <tags>json</tags>
  </metadata>
</package>