Indeks usług
Indeks usługi jest dokumentem JSON, który jest punktem wejścia dla źródła pakietu NuGet i umożliwia implementacji klienta odnajdywanie możliwości źródła pakietu. Indeks usługi jest obiektem JSON z dwiema wymaganymi właściwościami: version
(wersja schematu indeksu usługi) i resources
(punkty końcowe lub możliwości źródła pakietu).
Indeks usługi nuget.org znajduje się pod adresem https://api.nuget.org/v3/index.json
.
Wersje
Wartość version
to semVer 2.0.0 parseable version string, który wskazuje wersję schematu indeksu usługi. Interfejs API nakazuje, aby ciąg wersji miał numer wersji głównej .3
W miarę wprowadzania zmian powodujących niezgodność w schemacie indeksu usługi wersja pomocnicza ciągu wersji zostanie zwiększona.
Każdy zasób w indeksie usługi jest wersjonowany niezależnie od wersji schematu indeksu usługi.
Bieżąca wersja schematu to 3.0.0
. Wersja 3.0.0
jest funkcjonalnie równoważna starszej 3.0.0-beta.1
wersji, ale powinna być preferowana, ponieważ bardziej wyraźnie komunikuje stabilny, zdefiniowany schemat.
Metody HTTP
Indeks usługi jest dostępny przy użyciu metod GET
HTTP i HEAD
.
Zasoby
Właściwość resources
zawiera tablicę zasobów obsługiwanych przez to źródło pakietu.
Zasób
Zasób jest obiektem w tablicy resources
. Reprezentuje ona możliwość wersjonowania źródła pakietu. Zasób ma następujące właściwości:
Nazwisko | Type | Wymagania | Uwagi |
---|---|---|---|
@id | string | tak | Adres URL zasobu |
@type | string | tak | Stała ciągu reprezentująca typ zasobu |
comment | string | nie | Czytelny opis zasobu |
Jest @id
to adres URL, który musi być bezwzględny i musi mieć schemat HTTP lub HTTPS.
Element @type
służy do identyfikowania określonego protokołu do użycia podczas interakcji z zasobem. Typ zasobu jest nieprzezroczystym ciągiem, ale ogólnie ma format:
{RESOURCE_NAME}/{RESOURCE_VERSION}
Oczekuje się, że klienci będą trwale kodować @type
wartości, które rozumieją i wyszukują w indeksie usługi źródła pakietu. Dokładne @type
wartości używane obecnie są wyliczane w dokumentach referencyjnych poszczególnych zasobów wymienionych w przeglądzie interfejsu API.
Ze względu na tę dokumentację dokumentacja dotycząca różnych zasobów będzie zasadniczo pogrupowana według {RESOURCE_NAME}
indeksu usługi, który jest analogiczny do grupowania według scenariusza.
Nie ma wymagania, aby każdy zasób miał unikatowy lub @id
@type
. Do implementacji klienta należy określenie, który zasób ma preferować inny. Jedną z możliwych implementacji jest to, że zasoby tego samego lub zgodnego @type
mogą być używane w sposób okrężny w przypadku awarii połączenia lub błędu serwera.
Przykładowe żądanie
GET https://api.nuget.org/v3/index.json
Przykładowa odpowiedź
{
"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."
}
]
}