Índice de serviço
O índice de serviço é um documento JSON que é o ponto de entrada para uma origem de pacote do NuGet e permite que uma implementação de cliente descubra os recursos da origem do pacote. O índice de serviço é um objeto JSON com duas propriedades necessárias: version
(a versão do esquema do índice de serviço) e resources
(os pontos de extremidade ou recursos da origem do pacote).
O índice de serviços do nuget.org está localizado em https://api.nuget.org/v3/index.json
.
Controle de versão
O valor de version
é uma cadeia de caracteres de versão analisável do SemVer 2.0.0 que indica a versão do esquema do índice de serviço. A API exige que a cadeia de caracteres da versão tenha um número de versão principal de 3
. À medida que alterações sem interrupção são feitas no esquema de índice de serviço, a versão secundária da cadeia de caracteres da versão será aumentada.
Cada recurso no índice de serviço é versionado independentemente da versão do esquema de índice de serviço.
A versão atual do esquema é 3.0.0
. A versão 3.0.0
é funcionalmente equivalente à versão 3.0.0-beta.1
mais antiga, mas deve ser preferida, pois comunica mais claramente o esquema estável e definido.
Métodos HTTP
O índice de serviço é acessível usando métodos HTTP GET
e HEAD
.
Recursos
A propriedade resources
contém uma matriz de recursos suportados por esta origem de pacote.
Recurso
Um recurso é um objeto na matriz resources
. Ele representa um recurso versionado de uma origem de pacote. Um recurso tem as seguintes propriedades:
Nome | Digitar | Obrigatória | Observações |
---|---|---|---|
@id | string | sim | A URL para o recurso |
@type | string | sim | Uma constante de cadeia de caracteres que representa o tipo de recurso |
comment | string | não | Uma descrição legível por humanos do recurso |
O @id
é uma URL que deve ser absoluta e deve ter o esquema HTTP ou HTTPS.
O @type
é usado para identificar o protocolo específico a ser usado ao interagir com o recurso. O tipo do recurso é uma cadeia de caracteres opaca, mas geralmente tem o formato:
{RESOURCE_NAME}/{RESOURCE_VERSION}
Espera-se que os clientes codifiquem os valores de @type
que entendem e os procurem no índice de serviço de uma fonte de pacote. Os valores exatos de @type
em uso hoje são enumerados nos documentos de referência de recursos individuais listados na visão geral da API.
Para fins desta documentação, a documentação sobre diferentes recursos será essencialmente agrupada pelo {RESOURCE_NAME}
encontrado no índice de serviço, que é análogo ao agrupamento por cenário.
Não há exigência de que cada recurso tenha um único @id
ou @type
. Cabe à implementação do cliente determinar qual recurso prefere em detrimento de outro. Uma implementação possível é que recursos do mesmo @type
ou compatíveis com ele podem ser usados com distribuição equilibrada em caso de falha de conexão ou erro do servidor.
Solicitação de exemplo
GET https://api.nuget.org/v3/index.json
Resposta de exemplo
{
"version": "3.0.0",
"resources": [
{
"@id": "https://api.nuget.org/v3-flatcontainer/",
"@type": "PackageBaseAddress/3.0.0",
"comment": "Base URL of Azure storage where NuGet package registration info for NET Core is stored, in the format https://api.nuget.org/v3-flatcontainer/{id-lower}/{id-lower}.{version-lower}.nupkg"
},
{
"@id": "https://www.nuget.org/api/v2/package",
"@type": "PackagePublish/2.0.0"
},
{
"@id": "https://api-v2v3search-0.nuget.org/query",
"@type": "SearchQueryService/3.0.0-rc",
"comment": "Query endpoint of NuGet Search service (primary) used by RC clients"
},
{
"@id": "https://api-v2v3search-0.nuget.org/autocomplete",
"@type": "SearchAutocompleteService/3.0.0-rc",
"comment": "Autocomplete endpoint of NuGet Search service (primary) used by RC clients"
},
{
"@id": "https://api.nuget.org/v3/registration2/",
"@type": "RegistrationsBaseUrl/3.0.0-rc",
"comment": "Base URL of Azure storage where NuGet package registration info is stored used by RC clients. This base URL does not include SemVer 2.0.0 packages."
}
]
}