Contenido de un paquete

Es posible generar una dirección URL para capturar el contenido de un paquete arbitrario (el archivo .nupkg) mediante la API V3. El recurso utilizado para capturar el contenido del paquete es el recurso PackageBaseAddress que se encuentra en el índice de servicio. Este recurso también habilita el descubrimiento de todas las versiones de un paquete, incluidas o no en la lista.

Este recurso se conoce normalmente como “dirección base del paquete” o como “contenedor plano”.

Control de versiones

Se utiliza el siguiente valor de @type:

Valor de @type Notas
PackageBaseAddress/3.0.0 La versión inicial

URL base

La dirección URL base de las siguientes API es el valor de la propiedad @id asociada al valor @type de recurso mencionado anteriormente. En el documento siguiente, se usará la dirección URL base del marcador de posición {@id}. La dirección URL base puede cambiar en función de los cambios de implementación o infraestructura dentro del origen del paquete, por lo que el software cliente debe capturarla dinámicamente desde el índice de servicio.

Métodos HTTP

Todas las direcciones URL que se encuentran en el recurso de contenido de paquete admiten los métodos HTTP GET y HEAD.

Enumeración de versiones de paquetes

Si el cliente conoce un id. de paquete y quiere descubrir qué versiones de paquete tiene disponibles el origen del paquete, el cliente puede construir una dirección URL predecible para enumerar todas las versiones del paquete. Esta lista está pensada para ser una “lista de directorios” para la API de contenido de paquetes que se menciona a continuación.

Nota

La lista de directorios contiene todas las versiones de un paquete, enumeradas o no.

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

Parámetros de solicitud

Nombre En Tipo Obligatorio Notas
LOWER_ID Dirección URL string Id. del paquete, en minúsculas

El valor LOWER_ID es el id. de paquete deseado escrito en minúsculas mediante las reglas implementadas por el método System.String.ToLowerInvariant() de .NET.

Respuesta

Si el origen del paquete no tiene ninguna versión del id. de paquete proporcionado, se devuelve un código de estado 404.

Si el origen del paquete tiene una o más versiones, se devuelve un código de estado 200. El cuerpo de la respuesta es un objeto JSON con la siguiente propiedad:

Nombre Type Obligatorio Notas
versions Matriz de cadenas Versiones disponibles

Las cadenas de la matriz versions están todas en minúsculas y son cadenas normalizadas de versión de NuGet. Las cadenas de versión no contienen ningún metadato de generación de SemVer 2.0.0.

La intención es que las cadenas de versión que se encuentran en esta matriz se puedan usar textualmente para los tokens LOWER_VERSION que se encuentran en los siguientes puntos de conexión.

Solicitud de muestra

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

Asegúrate de capturar la dirección URL base (https://api.nuget.org/v3-flatcontainer/ en este ejemplo) del índice de servicio, tal y como se indica en la sección de la dirección URL base.

Respuesta de muestra

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

Descarga de contenido del paquete (.nupkg)

Si el cliente conoce la versión e id. de un paquete y quiere descargar el contenido de este, solo necesita construir la siguiente dirección URL:

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

Parámetros de solicitud

Nombre En Tipo Obligatorio Notas
LOWER_ID Dirección URL string Id. del paquete, en minúsculas
LOWER_VERSION Dirección URL string Versión del paquete, normalizada y en minúsculas

Tanto LOWER_ID como LOWER_VERSION se expresan en minúsculas mediante las reglas implementadas por .NETMétodo System.String.ToLowerInvariant().

LOWER_VERSION es la versión del paquete deseada, normalizada mediante las reglas de normalización de versión de NuGet. Esto significa que, en este caso, es necesario excluir los metadatos de generación que permite la especificación de SemVer 2.0.0.

Cuerpo de la respuesta

Si el paquete existe en el origen del paquete, se devuelve un código de estado 200. El cuerpo de la respuesta será el propio contenido del paquete.

Si el paquete no existe en el origen del paquete, se devuelve un código de estado 404.

Solicitud de muestra

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

Asegúrate de capturar la dirección URL base (https://api.nuget.org/v3-flatcontainer/ en este ejemplo) del índice de servicio, tal y como se indica en la sección de la dirección URL base.

Respuesta de muestra

Secuencia binaria que es el .nupkg para Newtonsoft.Json 9.0.1.

Descarga de manifiesto de paquete (.nuspec)

Si el cliente conoce la versión e id. de un paquete y quiere descargar el manifiesto de este, solo necesita construir la siguiente dirección URL:

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

Parámetros de solicitud

Nombre En Tipo Obligatorio Notas
LOWER_ID Dirección URL string Id. del paquete, en minúsculas
LOWER_VERSION Dirección URL string Versión del paquete, normalizada y en minúsculas

Tanto LOWER_ID como LOWER_VERSION se expresan en minúsculas mediante las reglas implementadas por el método System.String.ToLowerInvariant() de .NET.

LOWER_VERSION es la versión del paquete deseada, normalizada mediante las reglas de normalización de versión de NuGet. Esto significa que, en este caso, es necesario excluir los metadatos de generación que permite la especificación de SemVer 2.0.0.

Cuerpo de la respuesta

Si el paquete existe en el origen del paquete, se devuelve un código de estado 200. El cuerpo de la respuesta será el manifiesto de paquete, que es el .nuspec contenido en el archivo .nupkg correspondiente. El .nuspec es un documento XML.

Si el paquete no existe en el origen del paquete, se devuelve un código de estado 404.

Solicitud de muestra

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

Asegúrate de capturar la dirección URL base (https://api.nuget.org/v3-flatcontainer/ en este ejemplo) del índice de servicio, tal y como se indica en la sección de la dirección URL base.

Respuesta de muestra

<?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>