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>