NuGet API получает версию пакета

#api #get #request #nuget

#API #получает #запрос #nuget

Вопрос:

Я пытаюсь получить самую новую версию из пакета (в моем случае я пытаюсь использовать пакет StyleCopAnalyzerhttps://www.nuget.org/packages/StyleCop .Анализаторы).

Моя цель — выяснить, какая самая новая версия этого пакета, я пытаюсь это сделать с помощью следующего вызова get api:

https://api.nuget.org/v3/registration3/StyleCop .Анализаторы/index.json

Из-за некоторых ошибок в запросе я получаю этот json обратно:

 <?xml version="1.0" encoding="ISO-8859-1"?>
<Error>
<Code>BlobNotFound</Code>
<Message>The specified blob does not exist. RequestId:c2c2ffba-701e-0063-0daa-e47670000000 Time:2019-03-27T14:38:14.3708948Z</Message>
</Error>
  

Я создал этот запрос с помощью этого документа:

https://learn.microsoft.com/en-us/nuget/api/overview

Заранее спасибо, что помогли мне.

Ответ №1:

Развивая ответ @ zivkan , я нашел этот пост полезным для фонового контекста.

Особо следует отметить, что разработчики сервера NuGet объявляют, что они будут добавлять поддержку пакетов «semver 2.0» через эту конечную точку:

Сегодня в api / v3 /index.json видны два улья регистрации:

  1. https://api.nuget.org/v3/registration1/
  2. https://api.nuget.org/v3/registration1-gz/

Мы добавим третий:

  1. https://api.nuget.org/v3/registration1-semver2-gz/

Что не было очевидным для меня в документах, так это то, что semver2 конечная точка возвращает метаданные также для пакетов, отличных от semver 2 (после размышления это имеет смысл, поскольку любой пакет, следующий соглашениям semver 1.0, совместим с semver 2.0)

Я обновил свой код, чтобы больше не использовать его https://api.nuget.org/v3/registration3/ ни в каком контексте и всегда использовать https://api.nuget.org/v3/registration5-gz-semver2 .

Это изменение упрощает мой код проверки, включает в себя пакет, который я искал (а также 121 других).

Peter K пакет может быть разрешен с помощью:

https://api.nuget.org/v3/registration5-gz-semver2/stylecop.analyzers/index.json

Ответ №2:

Указанный вами URL-адрес задокументирован на странице метаданных пакета. Часть, в которой говорится о формате URL, имеет следующее:

ПОЛУЧАЕМ {@id}/{LOWER_ID}/index.json

Имя в типе Обязательные примечания

Строка URL-адреса LOWER_ID да, идентификатор пакета в нижнем регистре

Значение LOWER_ID — это желаемый идентификатор пакета, приведенный в нижнем регистре с использованием правил, реализованных .Система NET.Строка.метод ToLowerInvariant().

В другом месте страницы, где есть примеры URL-адресов, вы также можете увидеть, что идентификатор пакета указан в нижнем регистре.

Кроме того, в верхней части страницы есть небольшая таблица об управлении версиями. Как говорится в документах, использование базы регистрации v3.0.0 или v3.4.0 не вернет вам пакеты, использующие строку версии SemVer2. Поэтому, если вы хотите избежать пропуска версий пакета, вы должны получить RegistrationsBaseUrl/3.6.0 и идентификатор пакета в нижнем регистре:

https://api.nuget.org/v3/registration3-gz-semver2/stylecop.analyzers/index.json