Conteúdo do pacote

É possível gerar uma URL para buscar o conteúdo de um pacote arbitrário (o arquivo .nupkg) usando a API V3. O recurso usado para buscar o conteúdo do pacote é o recurso PackageBaseAddress encontrado no índice de serviço. Esse recurso também permite a descoberta de todas as versões de um pacote, listadas ou não listadas.

Esse recurso é comumente referido como o “endereço básico do pacote” ou como o “contêiner simples”.

Controle de versão

O seguinte valor @type é usado:

@type valor Observações
PackageBaseAddress/3.0.0 O lançamento inicial

URL base

A URL base para as APIs a seguir é o valor da propriedade @id associada ao valor do recurso @type mencionado anteriormente. No documento a seguir, a URL base {@id} do espaço reservado será usada. A URL base pode ser alterada com base na implementação ou nas alterações de infraestrutura dentro da origem do pacote, portanto, ela deve ser buscada dinamicamente no índice de serviço pelo software cliente.

Métodos HTTP

Todas as URLs encontradas no recurso de conteúdo do pacote oferecem suporte aos métodos HTTP GET e HEAD.

Enumerar versões do pacote

Se o cliente souber uma ID de pacote e quiser descobrir quais versões de pacote a origem do pacote tem disponíveis, o cliente poderá construir uma URL previsível para enumerar todas as versões do pacote. Esta lista destina-se a ser uma “listagem de diretório” para a API de conteúdo do pacote mencionada abaixo.

Observação

Esta lista contém versões de pacotes listadas e não listadas.

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

Parâmetros da solicitação

Nome Em Tipo Obrigatória Observações
LOWER_ID URL string sim A ID do pacote, em minúsculas

O valor LOWER_ID é a ID do pacote desejado em minúsculas usando as regras implementadas pelo método System.String.ToLowerInvariant() da .NET.

Resposta

Se a origem do pacote não tiver versões da ID do pacote fornecida, um código de status 404 será retornado.

Se a origem do pacote tiver uma ou mais versões, um código de status 200 será retornado. O corpo da resposta é um objeto JSON com a seguinte propriedade:

Nome Digitar Obrigatória Observações
versões matriz de cadeias de caracteres sim As versões disponíveis

As cadeias de caracteres na matriz versions são todas minúsculas, cadeias de caracteres de versão do NuGet normalizadas. As cadeias de caracteres de versão não contêm metadados de compilação do SemVer 2.0.0.

A intenção é que as cadeias de caracteres de versão encontradas nessa matriz possam ser usadas textualmente para os tokens LOWER_VERSION encontrados nos pontos de extremidade a seguir.

Solicitação de exemplo

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

Efetue fetch do URL base (https://api.nuget.org/v3-flatcontainer/ neste exemplo) do índice de serviço, conforme mencionado na seção URL base.

Resposta de exemplo

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

Baixar conteúdo do pacote (.nupkg)

Se o cliente souber uma ID e uma versão do pacote e quiser baixar o conteúdo do pacote, ele só precisará criar a seguinte URL:

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

Parâmetros da solicitação

Nome Em Tipo Obrigatória Observações
LOWER_ID URL string sim A ID do pacote, em minúsculas
LOWER_VERSION URL string sim A versão do pacote, normalizada e em minúsculas

Ambos LOWER_ID e LOWER_VERSION são em minúsculas usando as regras implementadas pelo .NETMétodo System.String.ToLowerInvariant().

O LOWER_VERSION é a versão do pacote desejada normalizada usando as regras de normalização de versão do NuGet. Isso significa que os metadados de compilação permitidos pela especificação do SemVer 2.0.0 devem ser excluídos nesse caso.

Corpo da resposta

Se o pacote existir na origem do pacote, um código de status 200 será retornado. O corpo da resposta será o próprio conteúdo do pacote.

Se o pacote não existir na origem do pacote, um código de status 404 será retornado.

Solicitação de exemplo

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

Efetue fetch do URL base (https://api.nuget.org/v3-flatcontainer/ neste exemplo) do índice de serviço, conforme mencionado na seção URL base.

Resposta de exemplo

O fluxo binário que é o .nupkg para Newtonsoft.Json 9.0.1.

Baixar manifesto do pacote (.nuspec)

Se o cliente souber uma ID e uma versão do pacote e quiser baixar o manifesto do pacote, ele só precisará criar a seguinte URL:

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

Parâmetros da solicitação

Nome Em Tipo Obrigatória Observações
LOWER_ID URL string sim A ID do pacote, em minúsculas
LOWER_VERSION URL string sim A versão do pacote, normalizada e em minúsculas

Ambos LOWER_ID e LOWER_VERSION são em minúsculas usando as regras implementadas pelo método System.String.ToLowerInvariant() do .NET.

O LOWER_VERSION é a versão do pacote desejada normalizada usando as regras de normalização de versão do NuGet. Isso significa que os metadados de compilação permitidos pela especificação do SemVer 2.0.0 devem ser excluídos nesse caso.

Corpo da resposta

Se o pacote existir na origem do pacote, um código de status 200 será retornado. O corpo da resposta será o manifesto do pacote, que é o .nuspec contido no .nupkg correspondente. A .nuspec é um documento de XML.

Se o pacote não existir na origem do pacote, um código de status 404 será retornado.

Solicitação de exemplo

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

Efetue fetch do URL base (https://api.nuget.org/v3-flatcontainer/ neste exemplo) do índice de serviço, conforme mencionado na seção URL base.

Resposta de exemplo

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