Blob hizmeti işlemleri için koşullu üst bilgileri belirtme
Çeşitli Blob hizmeti işlemleri koşullu üst bilgilerin kullanımını destekler. Yalnızca belirtilen bir koşul karşılandığında bir işlemi gerçekleştirmek için koşullu üst bilgiler belirtebilirsiniz.
Blob hizmeti, koşullu üst bilgiler için HTTP/1.1 protokol belirtimini izler.
Desteklenen Koşullu Üst Bilgiler
Desteklenen koşullu üst bilgiler aşağıdaki tabloda açıklanmıştır.
Koşullu üst bilgi | Description |
---|---|
If-Modified-Since |
Bir DateTime değer. Tarih biçimi RFC 1123'e göredir. Daha fazla bilgi için bkz. Üst bilgilerde tarih-saat değerlerinin gösterimi. İşlemi yalnızca kaynak belirtilen süreden sonra değiştirilmişse gerçekleştirmek için bu üst bilgiyi belirtin. |
If-Unmodified-Since |
Bir DateTime değer. Tarih biçimi RFC 1123'e göredir. Daha fazla bilgi için bkz. Üst bilgilerde tarih-saat değerlerinin gösterimi. İşlemi yalnızca kaynak belirtilen tarih/saatten sonra değiştirilmemişse gerçekleştirmek için bu üst bilgiyi belirtin. |
If-Match |
ETag değeri. İşlemi yalnızca kaynağın ETag değeri belirtilen değerle eşleşiyorsa 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 (*). yalnızca kaynağın ETag değeri belirtilen değerle eşleşmiyorsa 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. İşlemi yalnızca kaynak yoksa gerçekleştirmek için joker karakteri (*) belirtin ve varsa işlemi başarısız yapın. |
Sürüm 2013-08-15 veya Sonraki Sürümlerde Blob Hizmeti Okuma İşlemleri için Koşullu Üst Bilgiler Belirtme
2013-08-15 sürümünden itibaren Blob Alma ve Blob Özelliklerini Alma işlemleri birden çok koşullu üst bilgiyi destekler. Desteklenen koşullu üst bilgilerin herhangi bir bileşimini belirtebilirsiniz. Blob hizmeti bu koşulları aşağıdaki ifadeye göre değerlendirir:
If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)
ve If-None-Match
için If-Match
birden çok virgülle ayrılmış değer de sağlayabilirsiniz. için If-Match
birden çok değer belirtirseniz, Blob hizmeti ifadenin tamamını değerlendirmeden önce sağlanan tüm değerler üzerinde mantıksal OR
bir işlem gerçekleştirir. için if-None-Match
birden çok değer belirtirseniz, hizmet ifadenin tamamını değerlendirmeden önce mantıksal AND
bir işlem gerçekleştirir. ve için If-Modified-Since
If-Unmodified-Since
birden çok değer belirtilmesi desteklenmez ve hata kodu 400 (Bad Request
ile sonuçlanır.
Bu özellik , HTTP/1.1 belirtimine uymak ve Content Delivery Network (CDN) veya ara sunucunun bir denetim isteğine ek koşullu üst bilgiler eklediği senaryoları karşılamak için etkinleştirilir. Aşağıda, koşullu üst bilgilerin farklı bileşimlerinin bazı örnekleri verilmiştir.
Örnek 1:
ve If-Modified-Since
üst bilgilerini içeren If-Match
bir Get Blob isteği düşünün. Aşağıdaki tabloda, üst bilgilerin ayrı ayrı değerlendirilip değerlendirilmediğini belirten sonuç ve birlikte değerlendirilirse sonuç gösterilir.
Koşullu üst bilgiler | Tek tek değerlendirilirse sonuç | Birlikte değerlendirilirse sonuç |
---|---|---|
If-Match |
412 (Önkoşul Başarısız Oldu) | 412 (Önkoşul Başarısız Oldu) |
If-Modified-Since |
200 (Tamam) | 412 (Önkoşul Başarısız Oldu) |
If-Match |
412 (Önkoşul Başarısız Oldu) | 412 (Önkoşul Başarısız Oldu) |
If-Modified-Since |
304 (Değiştirilmedi) | 412 (Önkoş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ştirilmedi) |
If-Modified-Since |
304 (Değiştirilmedi) | 304 (Değiştirilmedi) |
Örnek 2:
ve If-Modified-Since
üst bilgilerini içeren If-None-Match
bir isteği göz önünde bulundurun.
Koşullu üst bilgiler | Tek tek değerlendirilirse sonuç | Birlikte değerlendirilirse sonuç |
---|---|---|
If-None-Match |
304 (Değiştirilmedi) | 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ştirilmedi) | 200 (Tamam) |
If-None-Match |
304 (Değiştirilmedi) | 304 (Değiştirilmedi) |
If-Modified-Since |
304 (Değiştirilmedi) | 304 (Değiştirilmedi) |
Örnek 3:
ve If-Match
If-Unmodified-Since
üst bilgilerini içeren If-Modified-Since
bir isteği göz önünde bulundurun.
Koşullu üst bilgiler | Tek tek değerlendirilirse sonuç | Birlikte değerlendirilirse sonuç |
---|---|---|
If-Modified-Since |
200 (Tamam) | 412 (Önkoşul Başarısız Oldu) |
If-Match |
412 (Önkoşul Başarısız Oldu) | 412 (Önkoşul Başarısız Oldu) |
If-Unmodified-Since |
200 (Tamam) | 412 (Önkoşul Başarısız Oldu) |
If-Modified-Since |
200 (Tamam) | 412 (Önkoşul Başarısız Oldu) |
If-Match |
200 (Tamam) | 412 (Önkoşul Başarısız Oldu) |
If-Unmodified-Since |
412 (Önkoşul Başarısız Oldu) | 412 (Önkoşul Başarısız Oldu) |
If-Modified-Since |
304 (Değiştirilmedi) | 412 (Önkoşul Başarısız Oldu) |
If-Match |
200 (Tamam) | 412 (Önkoşul Başarısız Oldu) |
If-Unmodified-Since |
412 (Önkoşul Başarısız Oldu) | 412 (Önkoşul Başarısız Oldu) |
If-Modified-Since |
304 (Değiştirilmedi) | 304 (Değiştirilmedi) |
If-Match |
200 (Tamam) | 304 (Değiştirilmedi) |
If-Unmodified-Since |
200 (Tamam) | 304 (Değiştirilmedi) |
Örnek 4:
, If-None-Match
If-Unmodified-Since
ve If-Match
üst bilgilerini içeren If-Modified-Since
bir isteği göz önünde bulundurun.
Kombinasyon | Tek tek http durum kodu | Blob durum sonucunu alma |
---|---|---|
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 (Önkoşul Başarısız Oldu) |
If-None-Match |
304 (Değiştirilmedi) | 412 (Önkoşul Başarısız Oldu) |
If-Unmodified-Since |
412 (Önkoşul Başarısız Oldu) | 412 (Önkoşul Başarısız Oldu) |
If-Match |
200 (Tamam) | 412 (Önkoşul Başarısız Oldu) |
If-Modified-Since |
200 (Tamam) | 200 (Tamam) |
If-None-Match |
304 (Değiştirilmedi) | 200 (Tamam) |
If-Unmodified-Since |
200 (Tamam) | 200 (Tamam) |
If-Match |
200 (Tamam) | 200 (Tamam) |
If-Modified-Since |
304 (Değiştirilmedi) | 412 (Önkoşul Başarısız Oldu) |
If-None-Match |
200 (Tamam) | 412 (Önkoşul Başarısız Oldu) |
If-Unmodified-Since |
200 (Tamam) | 412 (Önkoşul Başarısız Oldu) |
If-Match |
412 (Önkoşul Başarısız Oldu) | 412 (Önkoşul Başarısız Oldu) |
If-Modified-Since |
304 (Değiştirilmedi) | 412 (Önkoşul Başarısız Oldu) |
If-None-Match |
200 (Tamam) | 412 (Önkoşul Başarısız Oldu) |
If-Unmodified-Since |
412 (Önkoşul Başarısız Oldu) | 412 (Önkoşul Başarısız Oldu) |
If-Match |
412 (Önkoşul Başarısız Oldu) | 412 (Önkoşul Başarısız Oldu) |
If-Modified-Since |
304 (Değiştirilmedi) | 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ştirilmedi) | 412 (Önkoşul Başarısız Oldu) |
If-None-Match |
304 (Değiştirilmedi) | 412 (Önkoşul Başarısız Oldu) |
If-Unmodified-Since |
412 (Önkoşul Başarısız Oldu) | 412 (Önkoşul Başarısız Oldu) |
If-Match |
200 (Tamam) | 412 (Önkoşul Başarısız Oldu) |
2013-08-15 Öncesi Sürümlerde Okuma İşlemleri ve Yazma İşlemleri için Koşullu Üst Bilgiler Belirtme (Tüm Sürümler)
2013-08-15 öncesi sürümlerle Blob hizmeti okuma işlemlerini (Blob Alma ve Blob Özelliklerini Alma) çağırırken ve sürümden bağımsız olarak herhangi bir yazma işlemini çağırırken aşağıdakileri unutmayın:
bir istek hem hem
If-Modified-Since
deIf-None-Match
üst bilgilerini belirtirse, istek içindeIf-None-Match
belirtilen ölçütlere göre değerlendirilir.bir istek hem hem
If-Unmodified-Since
deIf-Match
üst bilgilerini belirtirse, istek içindeIf-Match
belirtilen ölçütlere göre değerlendirilir.Yukarıda listelenen iki koşullu üst bilgi bileşimi dışında, bir istek yalnızca tek bir koşullu üst bilgi belirtebilir. Birden fazla koşullu üst bilgi belirtilmesi 400 ( durum koduyla sonuçlanır
Bad Request
.Yanıt bir ETag içeriyorsa, ETag'i işlemeden önce isteğin ve yanıtın sürümünü doğrulayın. Örneğin, sürüm 2011-08-18 ve üzeri tırnak içine alınmış bir ETag döndürür, ancak eski sürümler döndürmez. Uygulamanızın değerlendirilmeden önce her iki ETag biçimlerini de işleyebildiğinden emin olun.
RFC 2616 , tek bir üst bilgide birden çok ETag değerine izin verir, ancak Blob hizmetine yapılan istekler yalnızca bir ETag değeri içerebilir. Birden fazla ETag değeri belirtilmesi 400 ( durum koduyla sonuçlanmıştır
Bad Request
).
Koşullu Üst Bilgileri Destekleyen İşlemler
Koşullu üst bilgileri destekleyen işlemler aşağıdaki tabloda açıklanmıştır.
REST İşlemi | İşlem türü | Desteklenen koşullu üst bilgiler |
---|---|---|
Ekleme Bloğu (sürüm 2015-02-21 ve üzeri) |
Write |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
URL'den Blok Ekle (sürüm 2018-11-09 ve üzeri) |
Write |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
İkili Büyük Nesneyi Kopyalama | Okuma ve Yazma | Hedef blobdaki koşullar için: - If-Modified-Since - If-Unmodified-Since - If-Match - If-None-Match - x-ms-if-tags Kaynak blobdaki 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 - x-ms-source-if-tags |
İkili Büyük Nesneyi Silme | Write |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Kapsayıcıyı Silme | Write |
If-Modified-Since If-Unmodified-Since |
Blob Alma | Read |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Blob Meta Verilerini Alma | Read |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
BLOB özelliklerini Al | Read |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Blob Etiketlerini Alma (sürüm 2019-12-12 ve üzeri) |
Read | x-ms-if-tags |
Blok Listesini Al | Read | x-ms-if-tags |
Sayfa Aralıklarını Alma | Read |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Blob Kiralama | Write |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Kira Kapsayıcısı | Write |
If-Modified-Since If-Unmodified-Since |
URL'den Blob Yerleştir | Write |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match Kaynak blobdaki 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 |
İkili Büyük Nesne Koyma | Write |
If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
URL'den Blok Koy (sürüm 2018-03-28 ve üzeri) |
Write |
x-ms-source-If-Modified-Since x-ms-source-If-Unmodified-Since x-ms-source-If-Match x-ms-source-If-None-Match |
Put Block List | Write |
If-Modified-Since DeğiştirilmemişSe-Since If-Match If-None-Match x-ms-if-tags |
Sayfa Koy | Write |
If-Modified-Since DeğiştirilmemişSe-Since If-Match If-None-Match x-ms-if-tags |
Url'den Sayfa Yerleştir (sürüm 2018-11-09 ve üzeri) |
Write |
If-Modified-Since DeğiştirilmemişSe-Since If-Match If-None-Match x-ms-if-tags |
Blob Meta Verilerini Ayarlama | Write |
If-Modified-Since DeğiştirilmemişSe-Since If-Match If-None-Match x-ms-if-tags |
Blob Özelliklerini Ayarlama | Write |
If-Modified-Since DeğiştirilmemişSe-Since If-Match If-None-Match x-ms-if-tags |
Kapsayıcı ACL'lerini ayarlama | Write |
If-Modified-Since DeğiştirilmemişSe-Since |
Kapsayıcı Meta Verilerini Ayarlama | Write | If-Modified-Since |
Blob Etiketlerini Ayarlama (sürüm 2019-12-12 ve üzeri) |
Write | x-ms-if-tags |
Blob Katmanını Ayarla | Write | x-ms-if-tags |
İkili Büyük Nesne Anlık Görüntüsünü Alma | Read |
If-Modified-Since DeğiştirilmemişSe-Since If-Match If-None-Match x-ms-if-tags |
Blob Değişmezlik İlkesini Ayarlama | Write | DeğiştirilmemişSe-Since |
Aşağıdaki Blob hizmeti veri işlemleri şu anda koşullu üst bilgileri desteklememektedir:
Koşullu Üst Bilgileri Destekleyen İşlemler için HTTP Yanıt Kodları
İstek bir koşullu üst bilgi içeriyorsa ve belirtilen koşul istenen kaynak tarafından karşılanmazsa, Blob hizmeti bir HTTP yanıt kodu döndürür. Döndürülen yanıt kodları HTTP/1.1 protokol belirtimine (RFC 2616) uygundur.
Azure .NET istemci kitaplığındaki yöntemler bu hata yanıt kodlarını bir StorageException nesnesine dönüştürür.
Okuma İşlemleri
Aşağıdaki tabloda, işlem bir okuma işlemi olduğunda her koşullu üst bilgi için karşılanmayan bir koşul için döndürülen yanıt kodları gösterilir. Okuma işlemleri GET veya HEAD fiillerini kullanır.
Koşullu üst bilgi | Koşul karşılanmadıysa yanıt kodu |
---|---|
If-Modified-Since |
Değiştirilmedi (304 (Değiştirilmedi)) |
If-Unmodified-Since |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
If-Match |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
If-None-Match |
Değiştirilmedi (304 (Değiştirilmedi)) |
2013-08-15 veya sonraki sürümlerde birden çok üst bilgi kullanırken elde etmek istediğiniz sonuçlar için yukarıdaki örneklere bakın.
Yazma İşlemleri
Aşağıdaki tabloda, işlem bir yazma işlemi olduğunda her koşullu üst bilgi için karşılanmayan bir koşul için döndürülen yanıt kodları gösterilir. Yazma işlemleri PUT veya DELETE fiillerini kullanır.
Koşullu üst bilgi | Koşul karşılanmadıysa yanıt kodu |
---|---|
If-Modified-Since |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
If-Unmodified-Since |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
If-Match |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
If-None-Match |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
İşlemleri Kopyala
Aşağıdaki tabloda, işlem bir kopyalama işlemi olduğunda her koşullu üst bilgi için karşılanmayan bir koşul için döndürülen yanıt kodları gösterilir. Blobu Kopyala işlemi PUT fiillerini kullanır.
Koşullu üst bilgi | Koşul karşılanmadıysa yanıt kodu |
---|---|
If-Modified-Since |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
If-Unmodified-Since |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
If-Match |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
If-None-Match |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
x-ms-source-if-modified-since |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
x-ms-source-if-unmodified-since |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
x-ms-source-if-match |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
x-ms-source-if-none-match |
Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız)) |
Etiketler Koşullu İşlemler
Blob hizmeti tarafından desteklenen standart HTTP koşullu üst bilgilerine ek olarak, çeşitli işlemler de blob kaynağındaki etiketlere karşı koşulları destekler.
Koşullu üst bilgi | Description |
---|---|
x-ms-if-tags |
Sürüm 2019-12-12 ve daha yeni. Bir TagsPredicate değer. İşlemi gerçekleştirmek için bu üst bilgiyi belirtin, ancak koşul blob etiketlerine göre değerlendirilir true . |
x-ms-source-if-tags |
Sürüm 2019-12-12 ve daha yeni. Yalnızca Blobu Kopyala için geçerlidir. Bir TagsPredicate değer. İşlemi gerçekleştirmek için bu üst bilgiyi belirtin, ancak koşul kaynak blob'un etiketlerine göre değerlendirilir true . |
bir istekte x-ms-if-tags
veya x-ms-source-if-tags
koşullu üst bilgi varsa ve TagsPredicate
değeri olarak değerlendirilirse false
, Blob hizmeti işlem için hata kodu 412 (Önkoşul Başarısız) döndürür.
Çağıranın veya x-ms-source-if-tags
koşullu üst bilgilerini kullanabilmesi x-ms-if-tags
için blobdaki etiketleri okuma izni olmalıdır.
Etiket Koşulu Söz Dizimi
Blob hizmeti, üst bilginin değeri için ANSI SQL WHERE yan tümcesi dil bilgisinin TagsPredicate
bir alt kümesini destekler. Aşağıdaki işleçler desteklenir:
İşleç | Açıklama | Örnek |
---|---|---|
= |
Eşittir | Status = 'In Progress' |
<> |
Eşit değildir | Status <> 'Done' |
> |
Büyüktür | LastModified > '2018-06-18 20:51:26Z' |
>= |
Büyüktür veya eşittir | Priority >= '05' |
< |
Küçüktür | Age < '032' |
<= |
Küçüktür 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 dizelerdir ve desteklenen ikili ilişkisel işleçler etiket değerlerinin sözcük temelli sıralamasını kullanır. Sayılar ve tarihler de dahil olmak üzere dize olmayan veri türlerini desteklemek için uygun doldurma ve sıralanabilir biçimlendirme kullanılmalıdır. Etiket değerleri tek tırnak içine alınmalıdır.
Etiket adları normal SQL tanımlayıcılarıysa, kaçış olmadan mevcut olabilir; özel karakterler içeriyorsa, çift tırnak işaretiyle sınırlandırılmalıdır (ör. "TagName" = 'TagValue').
İfadeler, birden çok etiket adı ve değeri için karşılaştırmalar içerebilir. Parantez ((
ve )
) mantıksal ifadeleri gruplandırmak ve kurallı işlem sırasını denetlemek için kullanılabilir. A TagsPredicate
, en fazla on (10) mantıksal işlem içerebilir.
Depolama hizmeti, hata kodu 400 (Hatalı İstek) olan geçersiz bir ifade içeren istekleri reddeder.