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


протоколы nuget.org

Чтобы взаимодействовать с nuget.org, клиентам необходимо следовать определенным протоколам. Так как эти протоколы продолжают развиваться, клиенты должны определить версию протокола, используемую при вызове определенных nuget.org API. Это позволяет nuget.org вносить изменения без нарушения совместимости для устаревших клиентов.

Замечание

API, описанные на этой странице, специфичны для nuget.org, и нет ожидания, что другие реализации сервера NuGet будут внедрять эти API.

Сведения об API NuGet, реализованной широко в экосистеме NuGet, см. в обзоре API.

В этом разделе перечислены различные протоколы, как и когда они приходят к существованию.

Протокол NuGet версии 4.1.0

Протокол 4.1.0 указывает на использование verify-scope keys для взаимодействия с другими службами, кроме nuget.org, с целью проверки соответствия пакета учетной записи на nuget.org. Обратите внимание, что 4.1.0 номер версии является непрозрачной строкой, но может совпадать с первой версией официального клиента NuGet, который поддерживал этот протокол.

Проверка гарантирует, что ключи API, созданные пользователем, используются только с nuget.org, а другая проверка или валидация сторонней службой осуществляется с помощью ключей одноразовой проверки. Эти ключи области проверки можно использовать для проверки того, принадлежит ли пакет определенному пользователю (учетной записи) на nuget.org.

Требование клиента

Клиенты должны передавать следующий заголовок при вызове API для отправки пакетов в nuget.org:

X-NuGet-Protocol-Version: 4.1.0

Обратите внимание, что X-NuGet-Client-Version заголовок имеет аналогичную семантику, но зарезервирован только для использования официальным клиентом NuGet. Клиенты третьих сторон должны использовать заголовок X-NuGet-Protocol-Version и значение.

Сам протокол push описан в документации для ресурсаPackagePublish.

Если клиент взаимодействует с внешними службами и должен проверить, принадлежит ли пакет определенному пользователю (учетной записи), он должен использовать следующий протокол и использовать ключи области проверки, а не ключи API из nuget.org.

API для запроса ключа подтверждения области доступа

Этот API используется для получения ключа области проверки для автора nuget.org для проверки пакета, принадлежащего ему/ей.

POST api/v2/package/create-verification-key/{ID}/{VERSION}

Параметры запроса

Имя In Тип Обязательно Примечания.
Идентификатор URL струна yes Идентификатор пакета, для которого запрашивается ключ области проверки
VERSION URL струна no Версия пакета
X-NuGet-ApiKey Header струна yes Например: X-NuGet-ApiKey: {USER_API_KEY}

Ответ

{
    "Key": "{Verify scope key from nuget.org}",
    "Expires": "{Date}"
}

API для проверки ключа сферы верификации

Этот API используется для проверки ключа области проверки для пакета, принадлежащего автору nuget.org.

GET api/v2/verifykey/{ID}/{VERSION}

Параметры запроса

Имя In Тип Обязательно Примечания.
Идентификатор URL струна yes Идентификатор пакета, для которого запрашивается ключ области проверки
VERSION URL струна no Версия пакета
X-NuGet-ApiKey Header струна yes Например: X-NuGet-ApiKey: {VERIFY_SCOPE_KEY}

Замечание

Этот ключ API проверки области истекает через день или при первом использовании, в зависимости от того, что наступит раньше.

Ответ

Код состояния Meaning
200 Ключ API действителен
Ошибка 403: Доступ запрещён Ключ API недействителен или не авторизован для отправки пакета
404 Пакет, на который ID ссылается и VERSION (необязательно) не существует