NuGet Server API

NuGet Server API'si paketleri indirmek, meta verileri getirmek, yeni paketler yayımlamak ve resmi istemcilerde kullanılabilen diğer işlemlerin çoğunu gerçekleştirmek için kullanılabilen bir http uç NuGet kümesidir.

Bu API NuGet Visual Studio, nuget.exe ve .NET CLI'daki NuGet istemci tarafından, Visual Studio kullanıcı arabiriminde arama ve gibi NuGet işlemleri dotnet restore gerçekleştirmek için nuget.exe push kullanılır.

Bazı durumlarda, nuget.org diğer paket kaynakları tarafından zorlanmayacak ek gereksinimlere sahip olduğunu unutmayın. Bu farklar, Nuget.org Protokolleri tarafından belgelenmiştir.

Kullanılabilir sürümler için basit bir numaralama ve indirme nuget.exe bkz. tools.json uç noktası.

Hizmet dizini

API'nin giriş noktası, iyi bilinen bir konumdaki bir JSON belgesidir. Bu belge, hizmet dizini olarak adlandırılan bir belgedir. Için hizmet dizininin konumu https://api.nuget.org/v3/index.json nuget.org.

Bu JSON belgesi, farklı işlevler sağlayan ve farklı kullanım durumlarını yerine getiren kaynakların listesini içerir.

API'yi destekleyen istemciler ilgili paket kaynaklarına bağlanmanın bir veya daha fazlasını bu hizmet dizini URL'lerinden birini kabul eder.

Hizmet dizini hakkında daha fazla bilgi için api başvurusuna bakın.

Sürüm Oluşturma

API, NuGet HTTP protokolünün 3. sürümüdür. Bu protokol bazen "V3 API"si olarak adlandırılır. Bu başvuru belgeleri protokolün bu sürümüne yalnızca "API" olarak başvurur.

Hizmet dizini şema sürümü, hizmet version dizininde özelliği tarafından belirtilmiştir. API, sürüm dizesinin ana sürüm numarasına sahip olduğunu zorunlu 3 verir. Hizmet dizini şemasında hataya neden olmayan değişiklikler yapıldı mı, sürüm dizesinin ikincil sürümü artırılacaktır.

Eski istemciler (nuget.exe 2.x gibi) V3 API'sini desteklemez ve yalnızca burada belgelenmiş olan eski V2 API'sini destekler.

NuGet V3 API'si, resmi NuGet istemcisinin 2.x sürümü tarafından uygulanan OData tabanlı protokol olan V2 API'nin ardılı olduğundan bu NuGet adlandırılmıştır. V3 API'si ilk olarak resmi NuGet istemcisinin 3.0 sürümü tarafından desteklendi ve hala NuGet istemcisi 4.0 ve üzerinde desteklenen en son ana protokol sürümüdür.

API'nin ilk yayımdan bu yana hataya neden olmayan protokol değişiklikleri yapıldı.

Kaynaklar ve şema

Hizmet dizini çeşitli kaynakları açıklar. Desteklenen geçerli kaynak kümesi aşağıdaki gibidir:

Kaynak adı Gerekli Açıklama
Katalog hayır Tüm paket olaylarının tam kaydı.
PackageBaseAddress evet Paket içeriğini al (.nupkg).
PackageDetailsUriTemplate hayır Paket ayrıntıları web sayfasına erişmek için bir URL oluşturun.
PackagePublish evet Paketleri itme ve silme (veya listeden silme).
RegistrationsBaseUrl evet Paket meta verilerini al.
ReportAbuseUriTemplate hayır Kötüye kullanım raporu web sayfasına erişmek için bir URL oluşturun.
RepositorySignatures hayır Depo imzalama için kullanılan sertifikaları al.
SearchAutocompleteService hayır Alt dizeye göre paket kimliklerini ve sürümlerini bulma.
SearchQueryService evet Anahtar sözcüke göre paketleri filtrele ve ara.
SymbolPackagePublish hayır Sembol paketlerini itme.

Genel olarak, bir API kaynağı tarafından döndürülen tüm ikili olmayan veriler JSON kullanılarak seri hale getirilecek. Hizmet dizininde her kaynak tarafından döndürülen yanıt şeması, bu kaynak için ayrı ayrı tanımlanır. Her kaynak hakkında daha fazla bilgi için yukarıda listelenen konulara bakın.

Gelecekte protokol geliştikçe JSON yanıtlarına yeni özellikler eklenebilir. İstemcinin geleceğe dayanıklı olması için uygulama, yanıt şemasının son olduğunu ve ek veri ekleyemzey olduğunu varsaymamalı. Uygulamanın anlamay olduğu tüm özellikler yoksayılır.

Not

Bir kaynak herhangi bir otomatik SearchAutocompleteService tamamlama davranışı uygulamazsa, yetkisiz bir şekilde devre dışı bırakılmıştır. Uygulanmazsa, resmi NuGet istemci nuget.org'un rapor kötüye kullanım URL'sini geri alır ReportAbuseUriTemplateReportAbuseUriTemplatetarafından iz uygulanır). Diğer istemciler, kullanıcıya bir rapor kötüye kullanım URL'si göstermemayı tercih olabilir.

Nuget.org'de belgelenmemiş kaynaklar

Sanal nuget.org V3 hizmet dizini, yukarıda belgelenmiş olan bazı kaynaklara sahip değildir. Kaynağı belgeleyemeyen birkaç neden vardır.

İlk olarak, uygulama ayrıntıları olarak kullanılan kaynakları belgeleye nuget.org. bu SearchGalleryQueryService kategoriye girer. NuGetGallery, veritabanını kullanmak yerine arama dizinimize bazı V2 (OData) sorgularını temsilci olarak almak için bu kaynağı kullanır. Bu kaynak ölçeklenebilirlik nedenleriyle ortaya çıktı ve dış kullanım için amaçlanmaz.

İkinci olarak, hiçbir zaman resmi istemcinin RTM sürümünde hiçbir zaman gönderilen kaynakları belgeleye girmeziz. PackageDisplayMetadataUriTemplate ve PackageVersionDisplayMetadataUriTemplate bu kategoriye girer.

Üçüncü olarak, kendisi kasıtlı olarak belgelenmemiş olan V2 protokolüyle sıkı bir şekilde bağlı olan kaynakları belgeleyen yok. Kaynak LegacyGallery bu kategoriye girer. Bu kaynak, bir V3 hizmet dizininin karşılık gelen V2 kaynak URL'sini işaret edin. Bu kaynak, nuget.exe list destekler.

Bir kaynak burada belgelenmişse, kesinlikle bu kaynaklara bağımlılık almamanız önerilir. Bu belgelenmemiş kaynakların davranışını kaldırabilir veya değiştirebiliriz ve bu da beklenmeyen yollarla uygulamanızı bozabilirsiniz.

Zaman damgaları

API tarafından döndürülen tüm zaman damgası UTC'dir veya aksi takdirde ISO 8601 gösterimi kullanılarak belirtilir.

HTTP yöntemleri

Fiil Kullanın
GET Genellikle verileri alarak salt okunur bir işlem gerçekleştirir.
HEAD karşılık gelen istek için yanıt üst bilgilerini GET getirir.
PUT Var olmayan bir kaynak oluşturur veya varsa bunu günceller. Bazı kaynaklar güncelleştirmeyi desteklemez.
DELETE Bir kaynağı siler veya listeden siler.

HTTP durum kodu

Kod Açıklama
200 Başarılı olur ve bir yanıt gövdesi vardır.
201 Başarılı ve kaynak oluşturuldu.
202 Başarılı oldu, istek kabul edildi ancak bazı işler hala tamamlanmamış ve zaman uyumsuz olarak tamamlandı olabilir.
204 Başarılı, ancak yanıt gövdesi yok.
301 Kalıcı bir yeniden yönlendirme.
302 Geçici yeniden yönlendirme.
400 URL 'deki veya istek gövdesindeki parametreler geçerli değil.
401 Belirtilen kimlik bilgileri geçersiz.
403 Verilen kimlik bilgileri verilen eyleme izin verilmiyor.
404 İstenen kaynak yok.
409 İstek, var olan bir kaynakla çakışıyor.
500 Hizmet beklenmeyen bir hatayla karşılaştı.
503 Hizmet geçici olarak kullanılamıyor.

GETBIR API uç noktasına yapılan herhangi bir istek, http yeniden yönlendirme (301 veya 302) döndürebilir. İstemciler, üstbilgiyi gözlemleyerek Location ve daha sonra yayımlayarak bu yeniden yönlendirmeleri düzgün şekilde işlemelidir GET . Belirli uç noktalarla ilgili belgeler, yeniden yönlendirmelerin nerede kullanılabileceğini açıkça çağırmaz.

500 düzeyinde bir durum kodu söz konusu olduğunda, istemci makul bir yeniden deneme mekanizması uygulayabilir. resmi NuGet istemci, 500 düzeyinde bir durum kodu veya TCP/DNS hatası ile karşılaşıldığında üç kez yeniden dener.

HTTP istek üstbilgileri

Ad Açıklama
X-NuGet-apikey Gönderme ve silme için gerekli, bkz. kaynak
X-NuGet-Client-Version Kullanım dışı ve değiştirilmiş
X-NuGet-protokol-sürümü Yalnızca nuget.org üzerinde bazı durumlarda gereklidir, bkz. NuGet.org Protocols
X-NuGet-oturum kimliği Isteğe bağlı. NuGet istemcileri v 4.7 + aynı NuGet istemci oturumunun parçası olan HTTP isteklerini belirler.

, X-NuGet-Session-Id İçinde tek bir geri yükleme ile ilgili tüm işlemler için tek bir değere sahiptir PackageReference . Otomatik tamamlama ve geri yükleme gibi diğer senaryolar için packages.config kodun birbirine nasıl bağlı olduğu ile ilgili birkaç farklı oturum kimliği olabilir.

Kimlik Doğrulaması

Kimlik doğrulaması, tanımlanacak paket kaynak uygulamasına bırakılır. Nuget.org için yalnızca kaynak, PackagePublish Özel BIR API anahtarı üst bilgisi aracılığıyla kimlik doğrulaması gerektirir. Ayrıntılar için bkz. kaynak .