NuGet Server API'si
NuGet Server API'si paketleri indirmek, meta verileri getirmek, yeni paketler yayımlamak ve resmi NuGet istemcilerinde kullanılabilen diğer işlemlerin çoğunu gerçekleştirmek için kullanılabilecek bir HTTP uç noktaları kümesidir.
Bu API, Visual Studio, nuget.exeve .NET CLI'daki NuGet istemcisi tarafından dotnet restore
, Visual Studio kullanıcı arabiriminde arama ve nuget.exe push
gibi NuGet işlemlerini gerçekleştirmek için kullanılır.
Bazı durumlarda, nuget.org diğer paket kaynakları tarafından uygulanmayan ek gereksinimlere sahip olduğunu unutmayın. Bu farklar, nuget.org Protokolleritarafından belgelenmiştir.
Basit bir numaralandırma ve kullanılabilir nuget.exe sürümlerinin indirilmesi için bkz. tools.json uç noktası.
NuGet paket deposu uyguluyorsanız, ek gereksinimler ve öneriler için uygulama kılavuzu de bakın.
Hizmet dizini
API'nin giriş noktası, iyi bilinen bir konumdaki bir JSON belgesidir. Bu belge, hizmet dizini olarak adlandırılır. nuget.org için hizmet dizininin konumu https://api.nuget.org/v3/index.json
.
Bu JSON belgesi, farklı işlevler sağlayan ve farklı kullanım örneklerini karşılayan kaynaklarının listesini içerir.
API'yi destekleyen istemciler, ilgili paket kaynaklarına bağlanma aracı olarak bu hizmet dizini URL'lerinden birini veya daha fazlasını kabul etmelidir.
Hizmet dizini hakkında daha fazla bilgi için bkz. api başvurusu .
Sürüm Oluşturma
API, NuGet'in HTTP protokolünün 3. sürümüdür. Bu protokol bazen "V3 API" olarak adlandırılır. Bu başvuru belgeleri, protokolün bu sürümünü yalnızca "API" olarak adlandıracaktır.
Hizmet dizini şema sürümü, hizmet dizinindeki version
özelliğiyle gösterilir. API, sürüm dizesinin ana sürüm numarası olan 3
gerektirir. Hizmet dizini şemasında hataya neden olmayan değişiklikler yapıldığından, sürüm dizesinin ikincil sürümü artırılır.
Eski istemciler (nuget.exe 2.x gibi) V3 API'sini desteklemez ve yalnızca burada belgelenmemiş olan eski V2 API'sini destekler.
NuGet V3 API'sinin adı, resmi NuGet istemcisinin 2.x sürümü tarafından uygulanan OData tabanlı protokol olan V2 API'sinin ardılı olmasıdır. V3 API'si ilk olarak resmi NuGet istemcisinin 3.0 sürümü tarafından desteklenmiştir ve yine de NuGet istemcisi, 4.0 ve üzerinde tarafından desteklenen en son ana protokol sürümüdür.
API'de ilk kullanıma sunulduğundan bu yana hataya neden olmayan protokol değişiklikleri yapılmıştır.
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 (.nupkg) alın. |
PackageDetailsUriTemplate | Hayır | Paket ayrıntıları web sayfasına erişmek için bir URL oluşturma. |
PackagePublish | evet | Paketleri gönderme ve silme (veya listeden kaldırma). |
ReadmeUriTemplate | Hayır | Bir paketin BENIOKU öğesine erişmek için BIR URL oluşturma. |
KayıtlarıBaseUrl | evet | Paket meta verilerini alma. |
ReportAbuseUriTemplate | Hayır | Rapor kötüye kullanımı web sayfasına erişmek için URL oluşturma. |
RepositorySignatures | Hayır | Depo imzalama için kullanılan sertifikaları alma. |
SearchAutocompleteService | Hayır | Alt dize kullanarak paket kimliklerini ve sürümlerini keşfedin. |
SearchQueryService | evet | Paketleri anahtar sözcüklere göre filtreleyin ve arayın. |
SymbolPackagePublish | Hayır | Sembol paketlerini gönderme. |
VulnerabilityInfo | Hayır | Bilinen güvenlik açıklarına sahip paketler. |
Genel olarak, bir API kaynağı tarafından döndürülen ikili olmayan tüm veriler JSON kullanılarak serileştirilir. Hizmet dizinindeki 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 içeremeyeceğini varsaymamalıdır. Uygulamanın anlamadığı tüm özellikler yoksayılmalıdır.
Not
Bir kaynak SearchAutocompleteService
uygulamadığında herhangi bir otomatik tamamlama davranışı düzgün bir şekilde devre dışı bırakılmalıdır.
ReportAbuseUriTemplate
uygulanmadığında, resmi NuGet istemcisi nuget.org'un rapor kötüye kullanım URL'sine geri döner (nuGet/Home#4924 tarafından izlenir). Diğer istemciler, kullanıcıya bir uygunsuz rapor URL'si göstermemeye çalışabilir.
nuget.org üzerinde belgelenmemiş kaynaklar
nuget.org üzerindeki V3 hizmet dizini, yukarıda belgelenmemiş bazı kaynaklara sahiptir. Bir kaynağı belgelememenin birkaç nedeni vardır.
İlk olarak, nuget.org uygulama ayrıntıları olarak kullanılan kaynakları belgelemiyoruz. SearchGalleryQueryService
bu kategoriye girer.
NuGetGallery, veritabanını kullanmak yerine bazı V2 (OData) sorgularını arama dizinimize temsilci olarak atamak için bu kaynağı kullanır. Bu kaynak ölçeklenebilirlik nedeniyle kullanıma sunulmuştur ve dış kullanıma yönelik değildir.
İkincisi, resmi istemcinin RTM sürümünde hiç gönderilmemiş kaynakları belgelemiyoruz.
PackageDisplayMetadataUriTemplate
ve PackageVersionDisplayMetadataUriTemplate
bu kategoriye girer.
Üçüncü olarak, kasıtlı olarak belgelenmemiş olan V2 protokolüyle sıkı bir şekilde birleştirilmiş kaynakları belgelemiyoruz.
LegacyGallery
kaynağı bu kategoriye girer. Bu kaynak, V3 hizmet dizininin ilgili V2 kaynak URL'sini işaret etmesini sağlar. Bu kaynak nuget.exe list
destekler.
Burada bir kaynak belgelenmemişse, bu kaynaklara bağımlılık almamanızı kesinlikle . Bu belgelenmemiş kaynakların davranışını kaldırabilir veya değiştirebiliriz; bu da uygulamanızı beklenmeyen yollarla bozabilir.
Zaman damga -ları
API tarafından döndürülen tüm zaman damgaları UTC'dir veya ISO 8601 gösterimi kullanılarak belirtilir.
HTTP yöntemleri
Fiil | Kullanmak |
---|---|
AL | Salt okunur bir işlem gerçekleştirir ve genellikle verileri alır. |
BAŞ | İlgili GET isteği için yanıt üst bilgilerini getirir. |
KOYMAK | Var olmayan bir kaynak oluşturur veya varsa, bu kaynağı güncelleştirir. Bazı kaynaklar güncelleştirmeyi desteklemeyebilir. |
SİLMEK | Bir kaynağı siler veya listeden çıkar. |
HTTP durum kodları
Kod | Açıklama |
---|---|
200 | Başarılı ve bir yanıt gövdesi var. |
201 | Başarılı oldu ve kaynak oluşturuldu. |
202 | Başarılı, istek kabul edildi, ancak bazı çalışmalar hala tamamlanmamış ve zaman uyumsuz olarak tamamlanabilir. |
204 | Başarılı, ancak yanıt gövdesi yok. |
301 | Kalıcı bir yeniden yönlendirme. |
302 | Geçici bir yeniden yönlendirme. |
400 | URL'deki veya istek gövdesindeki parametreler geçerli değil. |
401 | Sağlanan kimlik bilgileri geçersiz. |
403 | Sağlanan kimlik bilgilerine göre eyleme izin verilmez. |
404 | İstenen kaynak yok. |
409 | İstek mevcut bir kaynakla çakişer. |
500 | Hizmet beklenmeyen bir hatayla karşılaştı. |
503 | Hizmet geçici olarak kullanılamıyor. |
API uç noktasına yapılan GET
istekleri http yeniden yönlendirmesi (301 veya 302) döndürebilir. İstemciler, Location
üst bilgisini gözlemleyerek ve sonraki bir GET
vererek bu tür yeniden yönlendirmeleri düzgün bir şekilde işlemelidir. Belirli uç noktalarla ilgili belgeler, yeniden yönlendirmelerin nerede kullanılabileceğini açıkça belirtmez.
500 düzeyinde bir durum kodu söz konusu olduğunda, istemci makul bir yeniden deneme mekanizması uygulayabilir. Resmi NuGet istemcisi, 500 düzeyinde bir durum kodu veya TCP/DNS hatasıyla karşılaştığında üç kez yeniden denenir.
HTTP isteği üst bilgileri
Ad | Açıklama |
---|---|
X-NuGet-ApiKey | Gönderme ve silme için gereklidir, bkz. PackagePublish kaynak |
X-NuGet-Client-Version |
kullanım dışı bırakıldı ve yerine X-NuGet-Protocol-Version |
X-NuGet-Protocol-Version | Belirli durumlarda yalnızca nuget.org gerekliyse bkz. nuget.org protokolleri |
X-NuGet-Session-Id | İsteğe bağlı . NuGet istemcileri v4.7+ aynı NuGet istemci oturumunun parçası olan HTTP isteklerini tanımlar. |
X-NuGet-Session-Id
, PackageReference
içindeki tek bir geri yüklemeyle ilgili tüm işlemler için tek bir değere sahiptir. Otomatik tamamlama ve packages.config
geri yükleme gibi diğer senaryolarda, kodun nasıl oluşturulduğundan dolayı birkaç farklı oturum kimliği olabilir.
Kimlik doğrulama
Kimlik doğrulaması, tanımlanacağı paket kaynağı uygulamasına bırakılır. nuget.org için yalnızca PackagePublish
kaynağı, özel bir API anahtarı üst bilgisi aracılığıyla kimlik doğrulaması gerektirir. Ayrıntılar için bkz. PackagePublish
kaynak.