Aracılığıyla paylaş


Blob servis işlemleri için koşullu başlıkların belirtilmesi

Birkaç Blob servis operasyonu koşullu başlıkların kullanımını destekler. Belirli bir koşul sağlandığında bir işlemi gerçekleştirmek için koşullu başlıklar belirtebilirsiniz.

Blob servisi, koşullu başlıklar için HTTP/1.1 protokol spesifikasyonunu takip eder.

Desteklenen Koşullu Başlıklar

Desteklenen koşullu başlıklar aşağıdaki tabloda açıklanmıştır.

Koşullu başlık Description
If-Modified-Since Bir DateTime değer. Tarih biçimi RFC 1123'e uygundur. Daha fazla bilgi için, başlıklarda tarih-saat değerlerinin temsili bölümüne bakınız. Bu başlığı, yalnızca kaynak belirtilen zamandan beri değiştirilmişse işlemi yapacak şekilde belirtin.
If-Unmodified-Since Bir DateTime değer. Tarih biçimi RFC 1123'e uygundur. Daha fazla bilgi için, başlıklarda tarih-saat değerlerinin temsili bölümüne bakınız. Bu başlığı, kaynak belirtilen tarih/saatten önce değiştirilmemişse işlemi yapması için belirtin.
If-Match ETag değeri. yalnızca kaynağın ETag değeri belirtilen değerle eşleşiyorsa işlemi gerçekleştirmek için bu üst bilgiyi belirtin. 2011-08-18 ve daha yeni sürümler için ETag tırnak içinde belirtilebilir.
If-None-Match ETag değeri veya joker karakter (*). Bu başlığı, yalnızca kaynağın ETag'ı belirtilen değerle eşleşmiyorsa işlemi yapacak şekilde belirtin. 2011-08-18 ve daha yeni sürümler için ETag tırnak içinde belirtilebilir.

Kaynak yoksa işlemi yapacak joker karakteri (*) belirtin ve varsa işlemi başarısız edin.

2013-08-15 veya sonraki sürümde blob servis okuma işlemleri için koşullu başlıkların belirtilmesi

2013-08-15 sürümünden itibaren, Get Blob ve Get Blob Properties işlemleri birden fazla koşullu başlığı destekler. Desteklenen koşullu başlıkların herhangi bir kombinasyonunu belirleyebilirsiniz. Blob servisi bu koşulları aşağıdaki ifadeye göre değerlendirir:

If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)

Ayrıca ve If-None-Matchiçin If-Match birden fazla virgülle ayrılmış değer de sağlayabilirsiniz. Eğer için If-Matchbirden fazla değer belirtirseniz, Blob servisi tüm ifadeyi değerlendirmeden önce tüm verilen değerler üzerinde mantıklı OR bir işlem gerçekleştirir. Eğer için if-None-Matchbirden fazla değer belirtirseniz, hizmet tüm ifadeyi değerlendirmeden önce mantıklı AND bir işlem gerçekleştirir. Birden fazla değer If-Modified-Since belirtmek desteklenmiyor If-Unmodified-Since ve bu da 400Bad Request () hata koduna yol açıyor.

Bu özellik, HTTP/1.1 spesifikasyonuna uymak için etkinleştirilmiştir. Ayrıca, bir İçerik Teslimat Ağı (CDN) veya proxy sunucusunun uçuş sırasında bir talebe ek koşullu başlıklar eklediği senaryolara da hitap eder. Aşağıdaki örnekler, koşullu başlıkların birkaç farklı kombinasyonunu göstermektedir.

Örnek 1:

Ve başlıklarını içeren If-MatchIf-Modified-Sincebir Get Blob talebini düşünün. Aşağıdaki tablo, başlıklar tek tek değerlendirilirse sonucu ve kombinasyon halinde değerlendirilirse sonucu gösterir.

Koşullu başlıklar Bireysel olarak değerlendirildiğinde sonuç Kombinasyon halinde değerlendirilirse sonuç
If-Match 412 (Ön Koşul Başarısız Oldu) 412 (Ön Koşul Başarısız Oldu)
If-Modified-Since 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)
If-Match 412 (Ön Koşul Başarısız Oldu) 412 (Ön Koşul Başarısız Oldu)
If-Modified-Since 304 (Değiştirilmemiş) 412 (Ön Koşul Başarısız Oldu)
If-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 200 (Tamam) 200 (Tamam)
If-Match 200 (Tamam) 304 (Değiştirilmemiş)
If-Modified-Since 304 (Değiştirilmemiş) 304 (Değiştirilmemiş)

Örnek 2:

Başlıklar içeren If-None-MatchIf-Modified-Since bir isteği düşünün.

Koşullu başlıklar Bireysel olarak değerlendirildiğinde sonuç Kombinasyon halinde değerlendirilirse sonuç
If-None-Match 304 (Değiştirilmemiş) 200 (Tamam)
If-Modified-Since 200 (Tamam) 200 (Tamam)
If-None-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 200 (Tamam) 200 (Tamam)
If-None-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 304 (Değiştirilmemiş) 200 (Tamam)
If-None-Match 304 (Değiştirilmemiş) 304 (Değiştirilmemiş)
If-Modified-Since 304 (Değiştirilmemiş) 304 (Değiştirilmemiş)

Örnek 3:

Bir If-Matchisteği , , ve If-Unmodified-Since başlıklar içeren If-Modified-Sincebir talep düşünün.

Koşullu başlıklar Bireysel olarak değerlendirildiğinde sonuç Kombinasyon halinde değerlendirilirse sonuç
If-Modified-Since 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)
If-Match 412 (Ön Koşul Başarısız Oldu) 412 (Ön Koşul Başarısız Oldu)
If-Unmodified-Since 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)
If-Modified-Since 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)
If-Match 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)
If-Unmodified-Since 412 (Ön Koşul Başarısız Oldu) 412 (Ön Koşul Başarısız Oldu)
If-Modified-Since 304 (Değiştirilmemiş) 412 (Ön Koşul Başarısız Oldu)
If-Match 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)
If-Unmodified-Since 412 (Ön Koşul Başarısız Oldu) 412 (Ön Koşul Başarısız Oldu)
If-Modified-Since 304 (Değiştirilmemiş) 304 (Değiştirilmemiş)
If-Match 200 (Tamam) 304 (Değiştirilmemiş)
If-Unmodified-Since 200 (Tamam) 304 (Değiştirilmemiş)

Örnek 4:

Bir isteği If-None-Match, , If-Unmodified-Since, ve If-Match başlıkları içeren If-Modified-Sincebir talep ele alın.

Kombinasyon Bireysel http durum kodu Blob status sonucunu al
If-Modified-Since 200 (Tamam) 200 (Tamam)
If-None-Match 200 (Tamam) 200 (Tamam)
If-Unmodified-Since 200 (Tamam) 200 (Tamam)
If-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)
If-None-Match 304 (Değiştirilmemiş) 412 (Ön Koşul Başarısız Oldu)
If-Unmodified-Since 412 (Ön Koşul Başarısız Oldu) 412 (Ön Koşul Başarısız Oldu)
If-Match 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)
If-Modified-Since 200 (Tamam) 200 (Tamam)
If-None-Match 304 (Değiştirilmemiş) 200 (Tamam)
If-Unmodified-Since 200 (Tamam) 200 (Tamam)
If-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 304 (Değiştirilmemiş) 412 (Ön Koşul Başarısız Oldu)
If-None-Match 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)
If-Unmodified-Since 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)
If-Match 412 (Ön Koşul Başarısız Oldu) 412 (Ön Koşul Başarısız Oldu)
If-Modified-Since 304 (Değiştirilmemiş) 412 (Ön Koşul Başarısız Oldu)
If-None-Match 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)
If-Unmodified-Since 412 (Ön Koşul Başarısız Oldu) 412 (Ön Koşul Başarısız Oldu)
If-Match 412 (Ön Koşul Başarısız Oldu) 412 (Ön Koşul Başarısız Oldu)
If-Modified-Since 304 (Değiştirilmemiş) 200 (Tamam)
If-None-Match 200 (Tamam) 200 (Tamam)
If-Unmodified-Since 200 (Tamam) 200 (Tamam)
If-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 304 (Değiştirilmemiş) 412 (Ön Koşul Başarısız Oldu)
If-None-Match 304 (Değiştirilmemiş) 412 (Ön Koşul Başarısız Oldu)
If-Unmodified-Since 412 (Ön Koşul Başarısız Oldu) 412 (Ön Koşul Başarısız Oldu)
If-Match 200 (Tamam) 412 (Ön Koşul Başarısız Oldu)

2013-08-15 öncesindeki sürümlerde okuma işlemleri için ve yazma işlemleri için (tüm sürümler) koşullu başlıklar belirtin

2013-08-15'ten önceki sürümlerle Blob servis okuma işlemlerini (Get Blob and Get Blob Properties) çağırırken ve herhangi bir yazma işlemini çağırırken aşağıdaki hususları aklınızda bulundurun:

  • Bir istek hem If-None-Match de If-Modified-Since başlıkları belirtirse, istek 'de If-None-Matchbelirtilen kriterlere göre değerlendirilir.

  • Bir istek hem If-Match de If-Unmodified-Since başlıkları belirtirse, istek 'de If-Matchbelirtilen kriterlere göre değerlendirilir.

  • Daha önce listelenen iki koşullu başlık kombinasyonu dışında, bir talep yalnızca tek bir koşullu başlık belirtebilir. Birden fazla koşullu başlık belirtmek, durum kodu 400 (Bad Request) ile sonuçlanır.

  • Eğer bir yanıt ETag içeriyorsa, ETag'ı işlemeden önce istek ve yanıtın versiyonunu doğrulayın. Örneğin, 2011-08-18 ve sonraki sürümlerde alıntı belirtilen bir ETag döner, ancak eski sürümler bunu sağlamaz. Başvurunuzun her iki ETag formatını değerlendirmeden önce işleyebildiğinden emin olun.

  • RFC 2616 , tek bir başlıkta birden fazla ETag değerine izin verir, ancak Blob servisine yapılan talepler yalnızca bir ETag değeri içerebilir. Birden fazla ETag değeri belirtildiğinde durum kodu 400 (Bad Request).

Koşullu Başlıkları Destekleyen Operasyonlar

Koşullu başlıkları destekleyen işlemler aşağıdaki tabloda açıklanmıştır.

REST Operasyonu İşlem türü Desteklenen koşullu başlıklar
Ekleme Bloğu

(2015-02-21 ve sonraki sürüm)
Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
URL'den Blok Ekle

(2018-11-09 ve sonrası sürüm)
Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
Blobu Kopyala Okuma ve Yazma Hedef blob'daki koşullar için:

- Eğer-Değiştirilmiş-Çünkü

- Eğer-Değiştirilmemiş-Çünkü

- If-Match

- Eğer-Hiç Eşleşme

- x-ms-if-etiketler

Kaynak blob'taki koşullar için:

- x-ms-source-if-modified-since

- x-ms-kaynak-eğer-değiştirilmemiş-çünkü

- x-ms-source-if-match

- x-ms-kaynak-e-none-match

- x-ms-source-if-tags
Blobu Sil Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
Kapsayıcıyı Sil Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü
Blob'u al Read Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
Blob Meta Verilerini Alma Read Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
BLOB özelliklerini Al Read Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
Blob Etiketlerini Alma

Read x-ms-if-tags (2019-12-12 ve sonraki sürüm)

Blob'taki koşullar için (2025-11-05 ve sonraki sürüm):

- x-ms-blob-if-modified-since

- x-ms-blob-if-unmodified-since

- x-ms-blob-if-match

- x-ms-blob-if-none-match
Engelleme listesini alın Read x-ms-if-etiketler
Sayfa Aralıklarını Alın Read Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
Blob Kiralama Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
Kira Kapsayıcısı Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü
URL'den blob koy Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

Kaynak blob'taki koşullar için:

- x-ms-source-If-Modified-Since

- x-ms-source-if-unmodified-since

- x-ms-source-If-Match

- x-ms-source-If-None-Match

Blobu Yerleştir Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
URL'den Engelle

(2018-03-28 ve sonraki sürüm)
Write x-ms-source-If-Modified-Since

x-ms-source-If-Unmodified-Since

x-ms-source-If-Match

x-ms-source-If-None-Match
Engelleme listesini yerleştir Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
Sayfa Koy Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
URL'den sayfa koy

(2018-11-09 ve sonrası sürüm)
Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
Blob Meta Verilerini Ayarlama Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
Blob Özelliklerini Ayarlama Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
Kapsayıcı ACL'lerini ayarlama Write Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü
Set Container Metadata Write Eğer-Değiştirilmiş-Çünkü
Blob Etiketlerini Ayarlama

Write x-ms-if-tags (2019-12-12 ve sonraki sürüm)

Blob'taki koşullar için (2025-11-05 ve sonraki sürüm):

- x-ms-blob-if-modified-since

- x-ms-blob-if-unmodified-since

- x-ms-blob-if-match

- x-ms-blob-if-none-match
Blob Katmanını Ayarla Write x-ms-if-etiketler
Snapshot Blob Read Eğer-Değiştirilmiş-Çünkü

Eğer-Değiştirilmemiş-Çünkü

If-Match

Eğer-Hiç Eşleşme

x-ms-if-etiketler
Blob Değişmezlik Politikası Belirleyin Write Eğer-Değiştirilmemiş-Çünkü

Aşağıdaki Blob servis veri işlemleri şu anda koşullu başlıkları desteklememektedir:

Koşullu başlıkları destekleyen operasyonlar için HTTP yanıt kodları

Eğer istek koşullu bir başlık içeriyorsa ve istenen kaynak belirtilen koşulu karşılamazsa, Blob servisi HTTP yanıt kodu döndürür. Geri dönen yanıt kodları HTTP/1.1 protokol spesifikasyonuna (RFC 2616) uygundur.

Azure .NET istemci kütüphanesindeki yöntemler, bu hata yanıt kodlarını bir StorageException nesnesine dönüştürür.

Okuma Operasyonları

Aşağıdaki tablo, işlem okuma işlemi olduğunda her koşullu başlık için karşılanmamış koşul için geri dönen yanıt kodlarını gösterir. Okuma işlemleri GET veya HEAD fiillerini kullanır.

Koşullu başlık Koşul sağlanmazsa yanıt kodu
If-Modified-Since Değiştirilmemiş (304 (Değiştirilmemiş))
If-Unmodified-Since Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
If-Match Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
If-None-Match Değiştirilmemiş (304 (Değiştirilmemiş))

2013-08-15 veya daha sonraki sürümlerde birden fazla başlık kullanıldığında sonuçlar için önceki örneklere bakabilirsiniz.

Yazma İşlemleri

Aşağıdaki tablo, işlem bir yazma işlemi olduğunda her koşullu başlık için karşılanmamış bir koşul için geri dönen yanıt kodlarını gösterir. Yazma işlemleri PUT veya DELETE fiillerini kullanır.

Koşullu başlık Koşul sağlanmazsa yanıt kodu
If-Modified-Since Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
If-Unmodified-Since Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
If-Match Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
If-None-Match Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))

Kopyalama Operasyonları

Aşağıdaki tablo, işlem kopyalama işlemi olduğunda her koşullu başlık için karşılanmamış bir koşul için geri dönen yanıt kodlarını gösterir. Kopyalama işlemi ise PUT fiillerini kullanır.

Koşullu başlık Koşul sağlanmazsa yanıt kodu
If-Modified-Since Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
If-Unmodified-Since Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
If-Match Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
If-None-Match Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
x-ms-source-if-modified-since Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
x-ms-source-if-unmodified-since Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
x-ms-source-if-match Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))
x-ms-source-if-none-match Ön Koşul Başarısız Oldu (412 (Ön Koşul Başarısız Oldu))

Etiketler Koşullu İşlemler

Blob servisinin desteklediği standart HTTP koşullu başlıklarına ek olarak, birkaç işlem blob kaynağındaki etiketlere karşı koşulları da destekler.

Koşullu başlık Description
x-ms-if-tags 2019-12-12 ve daha yeni sürüm. Bir TagsPredicate değer. Bu başlığı, yalnızca önlem blobun etiketlerine karşı değer true verirse işlemi yapması için belirtin.
x-ms-source-if-tags 2019-12-12 ve daha yeni sürüm. Sadece Kopya Blob için geçerlidir. Bir TagsPredicate değer. Bu başlığı, yalnızca önlem kaynak blobun etiketlerine karşı değer true verirse işlemi yapacak şekilde belirtin.

Eğer bir istekte koşullu x-ms-if-tags başlık x-ms-source-if-tags varsa ve TagsPredicatefalseBlob servisi işlem için 412 hata kodu (Ön Koşul Başarısız) döndürür.

Çağıranın, koşullu x-ms-source-if-tags başlıkları x-ms-if-tags kullanmak için bir lekedeki etiketleri okuma iznine sahip olması gerekir.

Etiketler Giriş Sözdizimi

Blob servisi, başlığın değeri TagsPredicate için ANSI SQL'in bir alt kümesini destekler where cümle dilbilgisi. Aşağıdaki işleçler desteklenir:

Operator Description Example
= Eşit Status = 'In Progress'
<> Eşit değil Status <> 'Done'
> Daha büyük LastModified > '2018-06-18 20:51:26Z'
>= Büyüktür veya eşittir Priority >= '05'
< Daha az Age < '032'
<= Küçük veya eşittir Reviewer <= 'Smith'
AND Mantıksal ve Name > 'C' AND Name < 'D'
Age > '032' AND Age < '100'
OR Mantıksal veya Status = 'Done' or LastModified > '2018-06-18 20:51:26Z'

Tüm etiket değerleri dizidir ve desteklenen ikili ilişkisel operatörler etiket değerlerinin sözlüksel sıralamasını kullanır. Sayılar ve tarihler dahil olmak üzere dize olmayan veri türlerini desteklemek için uygun dolgu ve sıralanabilir biçimlendirme kullanılmalıdır. Etiket değerleri tek tırnak içinde yer almalıdır.

Eğer etiket isimleri normal SQL tanımlayıcılarsa, kaçışsız da mevcut olabilirler. Eğer özel karakterler içeriyorsa, çift tırnak ile sınırlandırılmalıdır, örneğin "TagName" = 'TagValue'.

İfadeler, birden fazla etiket adı ve değeri için karşılaştırmalar içerebilir. Parantez (( ve )) mantıksal ifadeleri gruplamak ve kanonik işlem sırasını kontrol etmek için kullanılabilir. A TagsPredicate en fazla 10 mantıksal işlem içerebilir.

Depolama hizmeti, hata kodu 400 (Kötü İstek) olan geçersiz bir ifade içeren herhangi bir isteği reddeder.

Ayrıca Bkz.

Blob Service Concepts