Určení podmíněných hlaviček pro operace služby Blob Service
Několik operací služby Blob Service podporuje použití podmíněných hlaviček. Podmíněné hlavičky můžete zadat k provedení operace pouze v případě, že byla splněna zadaná podmínka.
Služba Blob Service se řídí specifikací protokolu HTTP/1.1 pro podmíněné hlavičky.
Podporované podmíněné hlavičky
Podporované podmíněné hlavičky jsou popsány v následující tabulce.
Podmíněná hlavička | Description |
---|---|
If-Modified-Since |
Hodnota DateTime . Formát data odpovídá dokumentu RFC 1123. Další informace najdete v tématu Znázornění hodnot data a času v záhlavích. Tuto hlavičku zadejte, pokud chcete operaci provést pouze v případě, že se prostředek od zadaného času změnil. |
If-Unmodified-Since |
Hodnota DateTime . Formát data odpovídá dokumentu RFC 1123. Další informace najdete v tématu Znázornění hodnot data a času v záhlavích. Tuto hlavičku zadejte, pokud chcete operaci provést pouze v případě, že prostředek nebyl od zadaného data a času změněn. |
If-Match |
Hodnota ETag. Tuto hlavičku zadejte, pokud chcete operaci provést pouze v případě, že značka ETag prostředku odpovídá zadané hodnotě. Pro verze 2011-08-18 a novější je možné zadat eTag v uvozovkách. |
If-None-Match |
Hodnota ETag nebo zástupný znak (*). Tuto hlavičku zadejte, pokud chcete operaci provést pouze v případě, že značka ETag prostředku neodpovídá zadané hodnotě. Pro verze 2011-08-18 a novější je možné zadat eTag v uvozovkách. Zadejte zástupný znak (*), který provede operaci pouze v případě, že prostředek neexistuje, a pokud existuje, operaci se nezdaří. |
Zadání podmíněných hlaviček pro operace čtení služby Blob Service ve verzi 2013-08-15 nebo novější
Počínaje verzí 2013-08-15 podporují operace Get Blob a Get Blob Properties více podmíněných hlaviček. Můžete zadat libovolnou kombinaci podporovaných podmíněných hlaviček. Služba Blob Service vyhodnotí tyto podmínky podle následujícího výrazu:
If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)
Pro a If-None-Match
můžete také zadat více hodnot If-Match
oddělených čárkami. Pokud pro If-Match
zadáte více hodnot, služba Blob Service před vyhodnocením celého výrazu provede logickou OR
operaci se všemi zadanými hodnotami. Pokud pro if-None-Match
zadáte více hodnot, služba před vyhodnocením celého výrazu provede logickou AND
operaci. Zadání více hodnot pro If-Modified-Since
a If-Unmodified-Since
není podporováno a výsledkem je kód chyby 400 (Bad Request
).
Tato funkce je povolená za účelem zajištění souladu se specifikací HTTP/1.1 a pro scénáře, kdy služba Content Delivery Network (CDN) nebo proxy server přidá do příchozího požadavku další podmíněné hlavičky. Níže je uvedeno několik příkladů různých kombinací podmíněných hlaviček.
Příklad 1:
Zvažte požadavek na získání objektuIf-Match
blob obsahující hlavičky a If-Modified-Since
. Následující tabulka uvádí výsledek, pokud se hlavičky vyhodnocují jednotlivě, a výsledek, pokud se vyhodnocují v kombinaci.
Podmíněné hlavičky | Výsledek, pokud se vyhodnocuje jednotlivě | Výsledek, pokud je vyhodnocen v kombinaci |
---|---|---|
If-Match |
412 (Předběžná podmínka se nezdařila) | 412 (Předběžná podmínka se nezdařila) |
If-Modified-Since |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
If-Match |
412 (Předběžná podmínka se nezdařila) | 412 (Předběžná podmínka se nezdařila) |
If-Modified-Since |
304 (Neupravuje se) | 412 (Předběžná podmínka se nezdařila) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 304 (Neupravuje se) |
If-Modified-Since |
304 (Neupravuje se) | 304 (Neupravuje se) |
Příklad 2:
Představte si požadavek obsahující If-None-Match
hlavičky a If-Modified-Since
.
Podmíněné hlavičky | Výsledek, pokud se vyhodnocuje jednotlivě | Výsledek, pokud je vyhodnocen v kombinaci |
---|---|---|
If-None-Match |
304 (Neupravuje se) | 200 (OK) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-None-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-None-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
304 (Neupravuje se) | 200 (OK) |
If-None-Match |
304 (Neupravuje se) | 304 (Neupravuje se) |
If-Modified-Since |
304 (Neupravuje se) | 304 (Neupravuje se) |
Příklad 3:
Zvažte požadavek obsahující If-Modified-Since
hlavičky , If-Match
a If-Unmodified-Since
.
Podmíněné hlavičky | Výsledek, pokud se vyhodnocuje jednotlivě | Výsledek, pokud je vyhodnocen v kombinaci |
---|---|---|
If-Modified-Since |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
If-Match |
412 (Předběžná podmínka se nezdařila) | 412 (Předběžná podmínka se nezdařila) |
If-Unmodified-Since |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
If-Modified-Since |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
If-Match |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
If-Unmodified-Since |
412 (Předběžná podmínka se nezdařila) | 412 (Předběžná podmínka se nezdařila) |
If-Modified-Since |
304 (Neupravuje se) | 412 (Předběžná podmínka se nezdařila) |
If-Match |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
If-Unmodified-Since |
412 (Předběžná podmínka se nezdařila) | 412 (Předběžná podmínka se nezdařila) |
If-Modified-Since |
304 (Neupravuje se) | 304 (Neupravuje se) |
If-Match |
200 (OK) | 304 (Neupravuje se) |
If-Unmodified-Since |
200 (OK) | 304 (Neupravuje se) |
Příklad 4:
Zvažte požadavek obsahující If-Modified-Since
hlavičky , If-None-Match
If-Unmodified-Since
a If-Match
.
Kombinace | Individuální stavový kód HTTP | Získání výsledku stavu objektu blob |
---|---|---|
If-Modified-Since |
200 (OK) | 200 (OK) |
If-None-Match |
200 (OK) | 200 (OK) |
If-Unmodified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
If-None-Match |
304 (Neupravuje se) | 412 (Předběžná podmínka se nezdařila) |
If-Unmodified-Since |
412 (Předběžná podmínka se nezdařila) | 412 (Předběžná podmínka se nezdařila) |
If-Match |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-None-Match |
304 (Neupravuje se) | 200 (OK) |
If-Unmodified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
304 (Neupravuje se) | 412 (Předběžná podmínka se nezdařila) |
If-None-Match |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
If-Unmodified-Since |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
If-Match |
412 (Předběžná podmínka se nezdařila) | 412 (Předběžná podmínka se nezdařila) |
If-Modified-Since |
304 (Neupravuje se) | 412 (Předběžná podmínka se nezdařila) |
If-None-Match |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
If-Unmodified-Since |
412 (Předběžná podmínka se nezdařila) | 412 (Předběžná podmínka se nezdařila) |
If-Match |
412 (Předběžná podmínka se nezdařila) | 412 (Předběžná podmínka se nezdařila) |
If-Modified-Since |
304 (Neupravuje se) | 200 (OK) |
If-None-Match |
200 (OK) | 200 (OK) |
If-Unmodified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
304 (Neupravuje se) | 412 (Předběžná podmínka se nezdařila) |
If-None-Match |
304 (Neupravuje se) | 412 (Předběžná podmínka se nezdařila) |
If-Unmodified-Since |
412 (Předběžná podmínka se nezdařila) | 412 (Předběžná podmínka se nezdařila) |
If-Match |
200 (OK) | 412 (Předběžná podmínka se nezdařila) |
Určení podmíněných hlaviček pro operace čtení ve verzích starších než 2013-08-15 a pro operace zápisu (všechny verze)
Při volání operací čtení služby Blob Service (Získání objektu blob a Získání vlastností objektu blob) s verzemi staršími než 2013-08-15 a při volání jakékoli operace zápisu bez ohledu na verzi mějte na paměti následující:
Pokud požadavek určuje hlavičky
If-None-Match
iIf-Modified-Since
, vyhodnocuje se na základě kritérií zadaných vIf-None-Match
.Pokud požadavek určuje hlavičky
If-Match
iIf-Unmodified-Since
, vyhodnocuje se na základě kritérií zadaných vIf-Match
.S výjimkou dvou kombinací podmíněných hlaviček uvedených výše může požadavek zadat pouze jednu podmíněnou hlavičku. Zadáním více než jedné podmíněné hlavičky vznikne stavový kód 400 (
Bad Request
).Pokud odpověď obsahuje značku ETag, před zpracováním značky ETag ověřte verzi požadavku a odpovědi. Například verze 2011-08-18 a novější vrací uvozovanou eTag, ale starší verze ne. Ujistěte se, že vaše aplikace může před vyhodnocením zpracovat oba formáty značky ETag.
RFC 2616 umožňuje v jedné hlavičce více hodnot ETag, ale požadavky na službu Blob Service můžou obsahovat jenom jednu hodnotu ETag. Zadání více než jedné hodnoty značky ETag má za následek stavový kód 400 (
Bad Request
).
Operace podporující podmíněné hlavičky
Operace, které podporují podmíněné hlavičky, jsou popsané v následující tabulce.
Operace REST | Typ operace | Podporované podmíněné hlavičky |
---|---|---|
Připojit blok (verze 2015-02-21 a novější) |
Write |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Připojit blok z adresy URL (verze 9. 11. 2018 a novější) |
Write |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Zkopírování objektu blob | Čtení a zápis | Podmínky v cílovém objektu blob: - If-Modified-Since - Pokud-nezměněno-od - If-Match - If-None-Match - x-ms-if-tags Podmínky pro zdrojový objekt blob: - 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 |
Odstranění objektu blob | Write |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Odstranění kontejneru | Write |
If-Modified-Since Pokud-nezměněno-od |
Získání objektu blob | Read |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Získání metadat objektu blob | Read |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Získání vlastností objektu blob | Read |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Získání značek objektů blob (verze 2019-12-12 a novější) |
Read | x-ms-if-tags |
Získat seznam blokovaných | Read | x-ms-if-tags |
Získat rozsahy stránek | Read |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Operace Lease Blob | Write |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Zapůjčení kontejneru | Write |
If-Modified-Since Pokud-nezměněno-od |
Vložení objektu blob z adresy URL | Write |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match Podmínky pro zdrojový objekt blob: - x-ms-source-If-Modified-Since - x-ms-source-if-Unmodified-Since - x-ms-source-If-Match - x-ms-source-If-None-Match |
Vložení objektu blob | Write |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Put Block From URL (verze 2018-03-28 a novější) |
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 Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Vložit stránku | Write |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Vložit stránku z adresy URL (verze 9. 11. 2018 a novější) |
Write |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Nastavení metadat objektu blob | Write |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Nastavení vlastností objektu blob | Write |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Nastavit seznam ACL kontejneru | Write |
If-Modified-Since Pokud-nezměněno-od |
Nastavení metadat kontejneru | Write | If-Modified-Since |
Nastavení značek objektů blob (verze 2019-12-12 a novější) |
Write | x-ms-if-tags |
Nastavení úrovně objektu blob | Write | x-ms-if-tags |
Pořízení snímku objektu blob | Read |
If-Modified-Since Pokud-nezměněno-od If-Match If-None-Match x-ms-if-tags |
Nastavení zásad neměnnosti objektů blob | Write | Pokud-nezměněno-od |
Následující datové operace služby Blob Service aktuálně nepodporují podmíněné hlavičky:
Kódy odpovědí HTTP pro operace podporující podmíněné hlavičky
Pokud požadavek obsahuje podmíněnou hlavičku a zadanou podmínku nesplňuje požadovaný prostředek, vrátí služba Blob Service kód odpovědi HTTP. Vrácené kódy odpovědí jsou v souladu se specifikací protokolu HTTP/1.1 (RFC 2616).
Metody v klientské knihovně Azure .NET převádějí tyto kódy chybových odpovědí na objekt StorageException.
Operace čtení
Následující tabulka uvádí kódy odpovědí vrácené pro nesplněnou podmínku pro každou podmíněnou hlavičku, pokud je operace operace čtení. Operace čtení používají příkazy GET nebo HEAD.
Podmíněná hlavička | Kód odpovědi, pokud není splněna podmínka |
---|---|
If-Modified-Since |
Neupravěný (304 (Neupravován)) |
If-Unmodified-Since |
Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila)) |
If-Match |
Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila)) |
If-None-Match |
Neupravěný (304 (Neupravován)) |
Výsledky při použití více hlaviček s verzemi 2013-08-15 nebo novějšími najdete ve výše uvedených příkladech.
Operace zápisu
Následující tabulka uvádí kódy odpovědí vrácené pro nesplněnou podmínku pro každou podmíněnou hlavičku, pokud je operace operace zápisu. Operace zápisu používají příkazy PUT nebo DELETE.
Podmíněná hlavička | Kód odpovědi, pokud není splněna podmínka |
---|---|
If-Modified-Since |
Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila)) |
If-Unmodified-Since |
Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila)) |
If-Match |
Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila)) |
If-None-Match |
Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila)) |
Operace kopírování
Následující tabulka uvádí kódy odpovědí vrácené pro nesplněnou podmínku pro každou podmíněnou hlavičku, pokud se jedná o operaci kopírování. Operace kopírování objektu blob používá příkazy PUT.
Podmíněná hlavička | Kód odpovědi, pokud není splněna podmínka |
---|---|
If-Modified-Since |
Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila)) |
If-Unmodified-Since |
Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila)) |
If-Match |
Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila)) |
If-None-Match |
Předběžná podmínka selhala (412 (Předběžná podmínka se nezdařila)) |
x-ms-source-if-modified-since |
Předběžná podmínka selhala (412 (předběžná podmínka selhala)) |
x-ms-source-if-unmodified-since |
Předběžná podmínka selhala (412 (předběžná podmínka selhala)) |
x-ms-source-if-match |
Předběžná podmínka selhala (412 (předběžná podmínka selhala)) |
x-ms-source-if-none-match |
Předběžná podmínka selhala (412 (předběžná podmínka selhala)) |
Podmíněné operace značek
Kromě standardních podmíněných hlaviček HTTP podporovaných službou Blob Service podporuje několik operací také podmínky pro značky prostředku objektu blob.
Podmíněné záhlaví | Description |
---|---|
x-ms-if-tags |
Verze 2019-12-12 a novější. Hodnota TagsPredicate . Zadáním této hlavičky provedete operaci pouze v případě, že se predikát vyhodnotí jako true proti značkám objektu blob. |
x-ms-source-if-tags |
Verze 2019-12-12 a novější. Platí jenom pro kopírování objektů blob. Hodnota TagsPredicate . Tuto hlavičku zadejte pro provedení operace pouze v případě, že se predikát vyhodnotí jako proti značkám true zdrojového objektu blob. |
x-ms-if-tags
Pokud je v požadavku přítomna podmíněná hlavička nebo x-ms-source-if-tags
a TagsPredicate
výsledek se vyhodnotí jako false
, vrátí služba Blob Service pro operaci kód chyby 412 (Předběžná podmínka selhala).
Volající musí mít oprávnění ke čtení značek v objektu blob, aby mohl používat x-ms-if-tags
podmíněné hlavičky nebo x-ms-source-if-tags
.
Syntaxe predikátu značek
Služba Blob Service podporuje podmnožinu gramatiky klauzule WHERE ANSI SQL pro hodnotu hlavičky TagsPredicate
. Podporují se následující operátory:
Operátor | Popis | Příklad |
---|---|---|
= |
Je rovno | Status = 'In Progress' |
<> |
Není rovno | Status <> 'Done' |
> |
Větší než | LastModified > '2018-06-18 20:51:26Z' |
>= |
Větší než nebo rovno | Priority >= '05' |
< |
Menší než | Age < '032' |
<= |
Menší než nebo rovno | Reviewer <= 'Smith' |
AND |
Logické a | Name > 'C' AND Name < 'D' Age > '032' AND Age < '100' |
OR |
Logické nebo | Status = 'Done' or LastModified > '2018-06-18 20:51:26Z' |
Všechny hodnoty značek jsou řetězce a podporované binární relační operátory používají lexikografické řazení hodnot značek. Aby bylo možné podporovat jiné než řetězcové datové typy, včetně čísel a kalendářních dat, je nutné použít vhodné odsazení a seřaditelné formátování. Hodnoty značek musí být uzavřeny v jednoduchých uvozovkách.
Pokud názvy značek jsou běžné identifikátory SQL, mohou být přítomny bez úniku; pokud obsahují nějaké speciální znaky, musí být oddělené dvojitými uvozovkami (např. "TagName" = 'TagValue').
Výrazy můžou obsahovat porovnání více názvů a hodnot značek. Závorky ((
a )
) se dají použít k seskupení logických výrazů a řízení kanonického pořadí operací. A TagsPredicate
může obsahovat maximálně deset (10) logických operací.
Služba úložiště odmítne všechny požadavky, které obsahují neplatný výraz s kódem chyby 400 (chybný požadavek).