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, které se mají provést, můžete zadat 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 popsané v následující tabulce.
Podmíněné záhlaví | Description |
---|---|
If-Modified-Since |
Hodnota DateTime . Tuto hlavičku zadejte, aby se operace prováděla pouze v případě, že byl prostředek změněn od zadaného času. |
If-Unmodified-Since |
Hodnota DateTime . Tuto hlavičku zadejte, aby se operace prováděla pouze v případě, že prostředek nebyl změněn od zadaného data a času. |
If-Match |
Hodnota ETag. Tuto hlavičku zadejte, aby se operace prováděla pouze v případě, že značka ETag prostředku odpovídá zadané hodnotě. Pro verze 2011-08-18 a novější lze eTag zadat v uvozovkách. |
If-None-Match |
Hodnota ETag nebo zástupný znak (*). Tuto hlavičku zadejte, aby se operace prováděla pouze v případě, že značky ETag prostředku neodpovídají zadané hodnotě. Pro verze 2011-08-18 a novější lze eTag zadat v uvozovkách. Zadejte zástupný znak (*) pro provedení operace pouze v případě, že prostředek neexistuje, a pokud existuje, operace selže. |
Určení 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 několik 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)
Můžete také zadat více hodnot oddělených čárkami pro If-Match
a If-None-Match
. Pokud zadáte více hodnot If-Match
, služba Blob provede logickou OR
operaci u všech zadaných hodnot před vyhodnocením celého výrazu. Pokud zadáte více hodnot if-None-Match
, služba provede logickou AND
operaci před vyhodnocením celého výrazu. 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á tak, aby splňovala specifikaci HTTP/1.1 a vyhovovala scénářům, ve kterých Content Delivery Network (CDN) nebo proxy server přidává další podmíněné hlavičky do žádosti o let. Níže jsou uvedeny příklady různých kombinací podmíněných hlaviček.
Příklad 1:
Zvažte požadavek Získat objekt blob obsahující hlavičky If-Match
a If-Modified-Since
hlavičky. Následující tabulka označuje výsledek, pokud se záhlaví vyhodnocují jednotlivě, a výsledek, pokud jsou vyhodnoceny v kombinaci.
Podmíněné hlavičky | Výsledek, pokud se vyhodnotí jednotlivě | Výsledek, pokud je vyhodnocen v kombinaci |
---|---|---|
If-Match |
412 (předběžná podmínka selhala) | 412 (předběžná podmínka selhala) |
If-Modified-Since |
200 (OK) | 412 (předběžná podmínka selhala) |
If-Match |
412 (předběžná podmínka selhala) | 412 (předběžná podmínka selhala) |
If-Modified-Since |
304 (neupravuje se) | 412 (předběžná podmínka selhala) |
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:
Zvažte požadavek obsahující If-None-Match
a If-Modified-Since
hlavičky.
Podmíněné hlavičky | Výsledek, pokud se vyhodnotí 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
a If-Match
If-Unmodified-Since
hlavičky.
Podmíněné hlavičky | Výsledek, pokud se vyhodnotí jednotlivě | Výsledek, pokud je vyhodnocen v kombinaci |
---|---|---|
If-Modified-Since |
200 (OK) | 412 (předběžná podmínka selhala) |
If-Match |
412 (předběžná podmínka selhala) | 412 (předběžná podmínka selhala) |
If-Unmodified-Since |
200 (OK) | 412 (předběžná podmínka selhala) |
If-Modified-Since |
200 (OK) | 412 (předběžná podmínka selhala) |
If-Match |
200 (OK) | 412 (předběžná podmínka selhala) |
If-Unmodified-Since |
412 (předběžná podmínka selhala) | 412 (předběžná podmínka selhala) |
If-Modified-Since |
304 (neupravuje se) | 412 (předběžná podmínka selhala) |
If-Match |
200 (OK) | 412 (předběžná podmínka selhala) |
If-Unmodified-Since |
412 (předběžná podmínka selhala) | 412 (předběžná podmínka selhala) |
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
, If-None-Match
If-Unmodified-Since
a If-Match
hlavičky.
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 selhala) |
If-None-Match |
304 (neupravuje se) | 412 (předběžná podmínka selhala) |
If-Unmodified-Since |
412 (předběžná podmínka selhala) | 412 (předběžná podmínka selhala) |
If-Match |
200 (OK) | 412 (předběžná podmínka selhala) |
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 selhala) |
If-None-Match |
200 (OK) | 412 (předběžná podmínka selhala) |
If-Unmodified-Since |
200 (OK) | 412 (předběžná podmínka selhala) |
If-Match |
412 (předběžná podmínka selhala) | 412 (předběžná podmínka selhala) |
If-Modified-Since |
304 (neupravuje se) | 412 (předběžná podmínka selhala) |
If-None-Match |
200 (OK) | 412 (předběžná podmínka selhala) |
If-Unmodified-Since |
412 (předběžná podmínka selhala) | 412 (předběžná podmínka selhala) |
If-Match |
412 (předběžná podmínka selhala) | 412 (předběžná podmínka selhala) |
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 selhala) |
If-None-Match |
304 (neupravuje se) | 412 (předběžná podmínka selhala) |
If-Unmodified-Since |
412 (předběžná podmínka selhala) | 412 (předběžná podmínka selhala) |
If-Match |
200 (OK) | 412 (předběžná podmínka selhala) |
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í vlastností objektů blob a získání objektů blob) s verzemi před 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 jak
If-None-Match
If-Modified-Since
záhlaví, tak i na základě kritérií zadaných vIf-None-Match
.Pokud požadavek určuje jak
If-Match
If-Unmodified-Since
záhlaví, tak i 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. Určení více než jedné podmíněné hlavičky má za následek 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ší vrátí uvozovku ETag, ale starší verze ne. Před vyhodnocením se ujistěte, že aplikace dokáže zpracovat oba formáty značky ETag.
RFC 2616 umožňuje v jedné hlavičce více hodnot značky ETag, ale požadavky na službu Blob mohou obsahovat pouze jednu hodnotu značky 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ší) |
Zápis | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Připojit blok z adresy URL (verze 2018-11-09 a novější) |
Zápis | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Zkopírování objektu blob | Čtení a zápis | Podmínky pro cílový objekt blob: - If-Modified-Since - If-Unmodified-Since - If-Match - If-None-Match - x-ms-if-tags Podmínky zdrojového objektu 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 | Zápis | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Odstranění kontejneru | Zápis | If-Modified-Since If-Unmodified-Since |
Získání objektu blob | Číst | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Získání metadat objektů blob | Číst | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Získání vlastností objektu blob | Číst | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Získání značek objektů blob (verze 2019-12-12 a novější) |
Číst | x-ms-if-tags |
Získání seznamu blokovaných položek | Číst | x-ms-if-tags |
Získání rozsahů stránek | Číst | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Operace Lease Blob | Zápis | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Zapůjčení kontejneru | Zápis | If-Modified-Since If-Unmodified-Since |
Vložení objektu blob z adresy URL | Zápis | If-Modified-Since If-Unmodified-Since If-Match If-None-Match Podmínky zdrojového objektu 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 | Zápis | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Vložení adresy URL bloku (verze 2018-03-28 a novější) |
Zápis | x-ms-source-If-Modified-Since x-ms-source-If-Unmodified-Since x-ms-source-If-Match x-ms-source-If-None-Match |
Vložit seznam bloků | Zápis | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Vložit stránku | Zápis | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Vložit stránku z adresy URL (verze 2018-11-09 a novější) |
Zápis | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Nastavení metadat objektů blob | Zápis | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Nastavení vlastností objektu blob | Zápis | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Nastavení seznamu ACL kontejneru | Zápis | If-Modified-Since If-Unmodified-Since |
Nastavení metadat kontejneru | Zápis | If-Modified-Since |
Nastavení značek objektů blob (verze 2019-12-12 a novější) |
Zápis | x-ms-if-tags |
Nastavení úrovně objektu blob | Čtení nebo zápis | x-ms-if-tags |
Pořízení snímku objektu blob | Číst | If-Modified-Since If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Nastavení zásad neměnnosti objektů blob | Zápis | If-Unmodified-Since |
Následující operace s daty služby Blob Service v současné době 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 zadaná podmínka není splněna požadovaným prostředkem, 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řevedou tyto kódy chybových odpovědí na objekt StorageException.
Operace čtení
Následující tabulka označuje kódy odpovědí vrácené pro podmínku unmet pro každou podmíněnou hlavičku při operaci čtení. Operace čtení používají příkazy GET nebo HEAD.
Podmíněné záhlaví | Kód odpovědi, pokud podmínka nebyla splněna |
---|---|
If-Modified-Since |
Neupravuje se (304 (neupravuje)) |
If-Unmodified-Since |
Podmínka selhala (412 (předběžná podmínka selhala)) |
If-Match |
Podmínka selhala (412 (předběžná podmínka selhala)) |
If-None-Match |
Neupravuje se (304 (neupravuje)) |
Podívejte se na výše uvedené příklady výsledků při použití více hlaviček s verzemi 2013-08-15 nebo novějšími.
Operace zápisu
Následující tabulka označuje kódy odpovědí vrácené pro podmínku unmet pro každou podmíněnou hlavičku při operaci zápisu. Operace zápisu používají příkazy PUT nebo DELETE.
Podmíněné záhlaví | Kód odpovědi, pokud podmínka nebyla splněna |
---|---|
If-Modified-Since |
Podmínka selhala (412 (předběžná podmínka selhala)) |
If-Unmodified-Since |
Podmínka selhala (412 (předběžná podmínka selhala)) |
If-Match |
Podmínka selhala (412 (předběžná podmínka selhala)) |
If-None-Match |
Podmínka selhala (412 (předběžná podmínka selhala)) |
Operace kopírování
Následující tabulka označuje kódy odpovědí vrácené pro podmínku unmet pro každou podmíněnou hlavičku při operaci kopírování. Operace kopírování objektu blob používá příkazy PUT.
Podmíněné záhlaví | Kód odpovědi, pokud podmínka nebyla splněna |
---|---|
If-Modified-Since |
Podmínka selhala (412 (předběžná podmínka selhala)) |
If-Unmodified-Since |
Podmínka selhala (412 (předběžná podmínka selhala)) |
If-Match |
Podmínka selhala (412 (předběžná podmínka selhala)) |
If-None-Match |
Podmínka selhala (412 (předběžná podmínka selhala)) |
x-ms-source-if-modified-since |
Podmínka selhala (412 (předběžná podmínka selhala)) |
x-ms-source-if-unmodified-since |
Podmínka selhala (412 (předběžná podmínka selhala)) |
x-ms-source-if-match |
Podmínka selhala (412 (předběžná podmínka selhala)) |
x-ms-source-if-none-match |
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 . Tuto hlavičku zadejte, aby se operace prováděla pouze v případě, že se predikát vyhodnotí na true značky 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, aby se operace prováděla pouze v případě, že se predikát vyhodnotí na true značky zdrojového objektu blob. |
x-ms-if-tags
Pokud se v požadavku nachází hlavička nebo x-ms-source-if-tags
podmíněná hlavička a TagsPredicate
vyhodnotí se jako false
, služba Blob service vrátí kód chyby 412 (Předběžná podmínka se nezdařila) pro operaci.
Volající musí mít oprávnění ke čtení značek v objektu blob, aby mohl používat x-ms-if-tags
hlavičky nebo x-ms-source-if-tags
podmíněné hlavičky.
Syntaxe predikátu značek
Služba Blob service podporuje podmnožinu klauzule ANSI SQL gramatiky klauzule WHERE pro hodnotu hlavičkyTagsPredicate
. 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í lexikální ř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 řazení. Hodnoty značek musí být uzavřeny v jednoduchých uvozovkách.
Pokud jsou názvy značek běžné identifikátory SQL, mohou být přítomny bez zapouzdření; pokud obsahují nějaké speciální znaky, musí být oddělené dvojitými uvozovkami (např. "TagName" = 'TagValue').
Výrazy můžou zahrnovat porovnání pro více názvů značek a hodnot. Závorky ((
a )
) lze použít ke 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).