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 (Neupraveno) | 304 (Neupraveno) |
If-Match |
200 (OK) | 304 (Neupraveno) |
If-Unmodified-Since |
200 (OK) | 304 (Neupraveno) |
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 (Neupraveno) | 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 (Neupraveno) | 200 (OK) |
If-Unmodified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
304 (Neupraveno) | 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 (Neupraveno) | 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 (Neupraveno) | 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 (Neupraveno) | 412 (Předběžná podmínka se nezdařila) |
If-None-Match |
304 (Neupraveno) | 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ž 15. 8. 2013 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 před 15. 8. 2013 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
If-Modified-Since
i hlavičky, vyhodnotí se na základě kritérií zadaných vIf-None-Match
nástroji .Pokud požadavek určuje hlavičky
If-Match
If-Unmodified-Since
i hlavičky, vyhodnotí se na základě kritérií zadaných vIf-Match
nástroji .S výjimkou dvou výše uvedených kombinací podmíněných hlaviček může požadavek zadat pouze jednu podmíněnou hlavičku. Zadání 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. Ujistěte se, že vaše aplikace může zpracovat oba formáty značky ETag před jejich vyhodnocením.
RFC 2616 umožňuje v jedné hlavičce několik hodnot ETag, ale požadavky na službu Blob Service můžou obsahovat jenom jednu hodnotu značky ETag. Zadání více než jedné hodnoty ETag způsobí 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 | Pokud se změnilo od té doby 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ší) |
Write | Pokud se změnilo od té doby If-Unmodified-Since 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: - Pokud se změnilo od té doby - If-Unmodified-Since - If-Match - If-None-Match - x-ms-if-tags Podmínky ve zdrojovém 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 | Write | Pokud se změnilo od té doby If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Odstranění kontejneru | Write | Pokud se změnilo od té doby If-Unmodified-Since |
Získání objektu blob | Read | Pokud se změnilo od té doby If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Získání metadat objektů blob | Read | Pokud se změnilo od té doby If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Získání vlastností objektu blob | Read | Pokud se změnilo od té doby 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ší) |
Read | x-ms-if-tags |
Získat seznam blokovaných položek | Read | x-ms-if-tags |
Získání rozsahů stránek | Read | Pokud se změnilo od té doby If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Operace Lease Blob | Write | Pokud se změnilo od té doby If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Zapůjčení kontejneru | Write | Pokud se změnilo od té doby If-Unmodified-Since |
Vložení objektu blob z adresy URL | Write | Pokud se změnilo od té doby If-Unmodified-Since If-Match If-None-Match Podmínky ve zdrojovém 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 | Write | Pokud se změnilo od té doby If-Unmodified-Since If-Match If-None-Match x-ms-if-tags |
Vložit blok z adresy 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 | Pokud se změnilo od té doby 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 | Čtení nebo zápis | 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).