Индекс службы
Индекс службы — это документ JSON, который является точкой входа для источника пакета NuGet и позволяет клиентской реализации обнаруживать возможности источника пакета. Индекс службы — это объект JSON с двумя обязательными свойствами: version
(версия схемы индекса службы) и resources
(конечные точки или возможности источника пакета).
Индекс службы nuget.org находится здесь: https://api.nuget.org/v3/index.json
.
Значение version
является строкой версии SemVer 2.0.0, которая указывает версию схемы индекса службы. API требует, чтобы строка версии представляла основной номер версии 3
. Так как в схему индекса службы вносятся некритические изменения, дополнительный номер версии в строке версии увеличится.
Каждый ресурс в индексе службы обновляется независимо от версии схемы индекса службы.
Текущая версия схемы — 3.0.0
. Эта версия 3.0.0
функционально эквивалентна более старой версии 3.0.0-beta.1
, но ее следует предпочесть, так как она более четко представляет стабильную определенную схему.
Индекс службы можно получить с помощью методов HTTP GET
и HEAD
.
Свойство resources
содержит массив ресурсов, поддерживаемых этим источником пакета.
Ресурс — это объект в массиве resources
. Он представляет возможность источника пакета с определенной версией. Ресурс имеет следующие свойства:
Имя. | Type | Обязательное поле | Примечания. |
---|---|---|---|
@id | строка | yes | URL-адрес ресурса. |
@type | строка | yes | Строковая константа, представляющая тип объекта. |
Комментарий | строка | no | Понятное описание ресурса. |
@id
— это URL-адрес, который должен быть абсолютным и должен иметь схему HTTP или HTTPS.
@type
используется для определения конкретного протокола, используемого при взаимодействии с ресурсом. Тип ресурса является непрозрачной строкой, но обычно имеет следующий формат:
{RESOURCE_NAME}/{RESOURCE_VERSION}
Клиенты должны прописывать в коде значения @type
, которые они понимают, чтобы находить их в индексе службы источника пакета. Точные значения @type
, используемые сегодня, перечислены в справочных документах по отдельным ресурсам, перечисленных в разделе Обзор API.
Соответствующая документация по различным ресурсам будет по существу сгруппирована по {RESOURCE_NAME}
в индексе службы, что аналогично группировке по сценарию.
Не требуется, чтобы у каждого ресурса были уникальные @id
или @type
. Чтобы определить, какой ресурс предпочтительнее другого, необходимо реализовать клиент. Одной из возможных реализаций является то, что ресурсы с одинаковыми или совместимыми @type
могут использоваться в циклическом переборе в случае сбоя подключения или ошибки сервера.
GET https://api.nuget.org/v3/index.json
{
"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."
}
]
}