Поделиться через


Service index

Индекс службы — это документ JSON, который является точкой входа для источника пакета NuGet и позволяет клиентской реализации обнаруживать возможности источника пакета. Индекс службы — это объект JSON с двумя обязательными свойствами: version (версия схемы индекса службы) и resources (конечные точки или возможности источника пакета).

Индекс службы nuget.org находится по адресу https://api.nuget.org/v3/index.json.

Versioning

Значением version является строка версии SemVer 2.0.0.0, которая указывает версию схемы индекса службы. API предписывает, что строка версии имеет основной номер версии 3. Поскольку некритичные изменения вносятся в схему индекса службы, дополнительная версия строки версии будет увеличена.

Каждый ресурс в индексе службы зависит от версии схемы индекса службы.

Текущая 3.0.0версия схемы . Версия 3.0.0 функционально эквивалентна более старой 3.0.0-beta.1 версии, но она должна быть предпочтительнее, так как она более четко взаимодействует с стабильной, определенной схемой.

HTTP methods

Индекс службы доступен с помощью методов GET HTTP и HEAD.

Resources

Свойство resources содержит массив ресурсов, поддерживаемых этим источником пакета.

Resource

Ресурс — это объект в массиве resources . Он представляет версию возможности источника пакета. Ресурс имеет следующие свойства:

Name Type Required Notes
@id string yes URL-адрес ресурса
@type string yes Строковая константа, представляющая тип ресурса
comment string no Удобочитаемое описание ресурса

Это @id URL-адрес, который должен быть абсолютным и должен иметь схему HTTP или HTTPS.

Используется @type для идентификации конкретного протокола, используемого при взаимодействии с ресурсом. Тип ресурса является непрозрачной строкой, но обычно имеет формат:

{RESOURCE_NAME}/{RESOURCE_VERSION}

Ожидается, что клиенты жестко кодируют @type значения, которые они понимают и ищут в индексе службы источника пакета. Точные @type значения, используемые сегодня, перечисляются в отдельных справочных документах по ресурсам, перечисленных в обзоре API.

Для этой документации документация по разным ресурсам, по сути, будет сгруппирована {RESOURCE_NAME} по индексу службы, который аналогичен группировке по сценариям.

Не требуется, чтобы каждый ресурс был уникальным @id или @type. Это зависит от клиентской реализации, чтобы определить, какой ресурс следует предпочесть другому. Одна из возможных реализаций заключается в том, что ресурсы одного и того же или совместимого @type могут использоваться в режиме циклического перебора в случае сбоя подключения или ошибки сервера.

Ресурс может использовать другой узел или домен, отличный от индекса службы, но это может вызвать проблемы в средах с строгими правилами сети. В частности, если индекс службы добавляет ресурсы, указывающие непосредственно на nuget.org (а не прокси-сервер или кэширование через собственный веб-канал), веб-канал не будет работать, где доступ к nuget.org заблокирован. Если веб-канал будет делегировать определенные ресурсы nuget.org, рекомендуется добавить конфигурацию, чтобы при развертывании веб-канала можно удалить прямую nuget.org ссылку из индекса службы.

Sample request

GET https://api.nuget.org/v3/index.json

Sample response

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