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."
    }
  ]
}