Określanie nagłówków warunkowych dla operacji usługi Blob Service
Kilka operacji usługi Blob Service obsługuje użycie nagłówków warunkowych. Można określić nagłówki warunkowe, aby wykonać operację tylko wtedy, gdy określony warunek został spełniony.
Usługa Blob service jest zgodna ze specyfikacją protokołu HTTP/1.1 dla nagłówków warunkowych.
Obsługiwane nagłówki warunkowe
Obsługiwane nagłówki warunkowe opisano w poniższej tabeli.
Nagłówek warunkowy | Opis |
---|---|
If-Modified-Since |
Wartość DateTime . Format daty jest zgodny z RFC 1123. Aby uzyskać więcej informacji, zobacz Reprezentacja wartości daty i godziny w nagłówkach. Określ ten nagłówek, aby wykonać operację tylko wtedy, gdy zasób został zmodyfikowany od określonego czasu. |
If-Unmodified-Since |
Wartość DateTime . Format daty jest zgodny z RFC 1123. Aby uzyskać więcej informacji, zobacz Reprezentacja wartości daty i godziny w nagłówkach. Określ ten nagłówek, aby wykonać operację tylko wtedy, gdy zasób nie został zmodyfikowany od określonej daty/godziny. |
If-Match |
Wartość elementu ETag. Określ ten nagłówek, aby wykonać operację tylko wtedy, gdy element ETag zasobu jest zgodny z określoną wartością. W przypadku wersji 2011-08-18 i nowszych można określić element ETag w cudzysłowie. |
If-None-Match |
Wartość ETag lub symbol wieloznaczny (*). Określ ten nagłówek, aby wykonać operację tylko wtedy, gdy element ETag zasobu nie jest zgodny z określoną wartością. W przypadku wersji 2011-08-18 i nowszych można określić element ETag w cudzysłowie. Określ symbol wieloznaczny (*) do wykonania operacji tylko wtedy, gdy zasób nie istnieje, i nie powiedzie się operacji, jeśli istnieje. |
Określanie nagłówków warunkowych dla operacji odczytu usługi Blob Service w wersji 2013-08-15 lub nowszej
Począwszy od wersji 2013-08-15, operacje Get Blob i Get BlobProperties obsługują wiele nagłówków warunkowych. Można określić dowolną kombinację obsługiwanych nagłówków warunkowych. Usługa Blob Service oceni te warunki zgodnie z następującym wyrażeniem:
If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)
Można również podać wiele wartości rozdzielonych przecinkami dla If-Match
elementów i If-None-Match
. Jeśli określisz wiele wartości dla If-Match
elementu , usługa Blob wykonuje operację logiczną OR
na wszystkich podanych wartościach przed dokonaniem oceny całego wyrażenia. Jeśli określisz wiele wartości dla if-None-Match
elementu , usługa wykonuje operację logiczną AND
przed obliczeniu całego wyrażenia. Określanie wielu wartości dla If-Modified-Since
parametru i If-Unmodified-Since
nie jest obsługiwane i powoduje wyświetlenie kodu błędu 400 (Bad Request
).
Ta funkcja jest włączona, aby zapewnić zgodność ze specyfikacją HTTP/1.1 i obsługiwać scenariusze, w których usługa Content Delivery Network (CDN) lub serwer proxy dodaje dodatkowe nagłówki warunkowe do żądania lotów. Poniżej przedstawiono kilka przykładów różnych kombinacji nagłówków warunkowych.
Przykład 1:
Rozważ żądanie Get Blob zawierające If-Match
nagłówki i If-Modified-Since
. Poniższa tabela wskazuje wynik, jeśli nagłówki są oceniane indywidualnie, a wynik, jeśli są oceniane w połączeniu.
Nagłówki warunkowe | Wynik, jeśli jest oceniany indywidualnie | Wynik w przypadku oceny w kombinacji |
---|---|---|
If-Match |
412 (Warunek wstępny nie powiodło się) | 412 (Warunek wstępny nie powiodło się) |
If-Modified-Since |
200 (OK) | 412 (Warunek wstępny nie powiodło się) |
If-Match |
412 (Warunek wstępny nie powiodło się) | 412 (Warunek wstępny nie powiodło się) |
If-Modified-Since |
304 (niezmodyfikowane) | 412 (Warunek wstępny nie powiodło się) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 304 (niezmodyfikowane) |
If-Modified-Since |
304 (niezmodyfikowane) | 304 (niezmodyfikowane) |
Przykład 2:
Rozważ żądanie zawierające If-None-Match
i If-Modified-Since
nagłówki.
Nagłówki warunkowe | Wynik, jeśli jest oceniany indywidualnie | Wynik w przypadku oceny w kombinacji |
---|---|---|
If-None-Match |
304 (niezmodyfikowane) | 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 (niezmodyfikowane) | 200 (OK) |
If-None-Match |
304 (niezmodyfikowane) | 304 (niezmodyfikowane) |
If-Modified-Since |
304 (niezmodyfikowane) | 304 (niezmodyfikowane) |
Przykład 3:
Rozważ żądanie zawierające If-Modified-Since
nagłówki i .If-Unmodified-Since
If-Match
Nagłówki warunkowe | Wynik, jeśli jest oceniany indywidualnie | Wynik w przypadku oceny w kombinacji |
---|---|---|
If-Modified-Since |
200 (OK) | 412 (Warunek wstępny nie powiodło się) |
If-Match |
412 (Warunek wstępny nie powiodło się) | 412 (Warunek wstępny nie powiodło się) |
If-Unmodified-Since |
200 (OK) | 412 (Warunek wstępny nie powiodło się) |
If-Modified-Since |
200 (OK) | 412 (Warunek wstępny nie powiodło się) |
If-Match |
200 (OK) | 412 (Warunek wstępny nie powiodło się) |
If-Unmodified-Since |
412 (Warunek wstępny nie powiodło się) | 412 (Warunek wstępny nie powiodło się) |
If-Modified-Since |
304 (niezmodyfikowane) | 412 (Warunek wstępny nie powiodło się) |
If-Match |
200 (OK) | 412 (Warunek wstępny nie powiodło się) |
If-Unmodified-Since |
412 (Warunek wstępny nie powiodło się) | 412 (Warunek wstępny nie powiodło się) |
If-Modified-Since |
304 (niezmodyfikowane) | 304 (niezmodyfikowane) |
If-Match |
200 (OK) | 304 (niezmodyfikowane) |
If-Unmodified-Since |
200 (OK) | 304 (niezmodyfikowane) |
Przykład 4:
Rozważ żądanie zawierające If-Modified-Since
nagłówki , If-None-Match
If-Unmodified-Since
i If-Match
.
Połączenie | Indywidualny kod stanu http | Uzyskiwanie wyniku stanu obiektu 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 (Warunek wstępny nie powiodło się) |
If-None-Match |
304 (niezmodyfikowane) | 412 (Warunek wstępny nie powiodło się) |
If-Unmodified-Since |
412 (Warunek wstępny nie powiodło się) | 412 (Warunek wstępny nie powiodło się) |
If-Match |
200 (OK) | 412 (Warunek wstępny nie powiodło się) |
If-Modified-Since |
200 (OK) | 200 (OK) |
If-None-Match |
304 (niezmodyfikowane) | 200 (OK) |
If-Unmodified-Since |
200 (OK) | 200 (OK) |
If-Match |
200 (OK) | 200 (OK) |
If-Modified-Since |
304 (niezmodyfikowane) | 412 (Warunek wstępny nie powiodło się) |
If-None-Match |
200 (OK) | 412 (Warunek wstępny nie powiodło się) |
If-Unmodified-Since |
200 (OK) | 412 (Warunek wstępny nie powiodło się) |
If-Match |
412 (Warunek wstępny nie powiodło się) | 412 (Warunek wstępny nie powiodło się) |
If-Modified-Since |
304 (niezmodyfikowane) | 412 (Warunek wstępny nie powiodło się) |
If-None-Match |
200 (OK) | 412 (Warunek wstępny nie powiodło się) |
If-Unmodified-Since |
412 (Warunek wstępny nie powiodło się) | 412 (Warunek wstępny nie powiodło się) |
If-Match |
412 (Warunek wstępny nie powiodło się) | 412 (Warunek wstępny nie powiodło się) |
If-Modified-Since |
304 (niezmodyfikowane) | 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 (niezmodyfikowane) | 412 (Warunek wstępny nie powiodło się) |
If-None-Match |
304 (niezmodyfikowane) | 412 (Warunek wstępny nie powiodło się) |
If-Unmodified-Since |
412 (Warunek wstępny nie powiodło się) | 412 (Warunek wstępny nie powiodło się) |
If-Match |
200 (OK) | 412 (Warunek wstępny nie powiodło się) |
Określanie nagłówków warunkowych dla operacji odczytu w wersjach wcześniejszych niż 2013-08-15 i operacji zapisu (wszystkie wersje)
Podczas wywoływania operacji odczytu usługi Blob Service (Pobierz właściwości obiektów blob i Get Blob) z wersjami wcześniejszymi niż 2013-08-15 oraz podczas wywoływania dowolnej operacji zapisu niezależnie od wersji należy pamiętać o następujących kwestiach:
Jeśli żądanie określa zarówno
If-None-Match
nagłówki, jak iIf-Modified-Since
, żądanie jest oceniane na podstawie kryteriów określonych w elemecieIf-None-Match
.Jeśli żądanie określa zarówno
If-Match
nagłówki, jak iIf-Unmodified-Since
, żądanie jest oceniane na podstawie kryteriów określonych w elemecieIf-Match
.Z wyjątkiem dwóch kombinacji nagłówków warunkowych wymienionych powyżej żądanie może określać tylko jeden nagłówek warunkowy. Określanie więcej niż jednego nagłówka warunkowego powoduje wyświetlenie kodu stanu 400 (
Bad Request
).Jeśli odpowiedź zawiera element ETag, sprawdź wersję żądania i odpowiedzi przed przetworzeniem elementu ETag. Na przykład wersja 2011-08-18 lub nowsza zwraca cytowany element ETag, ale starsze wersje nie. Upewnij się, że aplikacja może przetwarzać oba formaty ETag przed ich oceną.
RFC 2616 zezwala na wiele wartości ETag w jednym nagłówku, ale żądania do usługi Blob Service mogą zawierać tylko jedną wartość ETag. Określenie więcej niż jednej wartości elementu ETag powoduje wyświetlenie kodu stanu 400 (
Bad Request
).
Operacje obsługujące nagłówki warunkowe
Operacje obsługujące nagłówki warunkowe zostały opisane w poniższej tabeli.
Operacja REST | Typ operacji | Obsługiwane nagłówki warunkowe |
---|---|---|
Blok dołączania (wersja 2015-02-21 lub nowsza) |
Write | If-Modified-Since If-Unmodified-Since Dopasowanie w przypadku If-None-Match x-ms-if-tags |
Dołączanie bloku z adresu URL (wersja 2018-11-09 lub nowsza) |
Write | If-Modified-Since If-Unmodified-Since Dopasowanie w przypadku If-None-Match x-ms-if-tags |
Kopiowanie obiektu blob | Odczyt i zapis | W przypadku warunków w docelowym obiekcie blob: - If-Modified-Since - If-Unmodified-Since - Dopasowanie w przypadku - If-None-Match - x-ms-if-tags W przypadku warunków w źródłowym obiekcie 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 |
Usuwanie obiektu blob | Write | If-Modified-Since If-Unmodified-Since Dopasowanie w przypadku If-None-Match x-ms-if-tags |
Usuwanie kontenera | Write | If-Modified-Since If-Unmodified-Since |
Uzyskiwanie obiektu blob | Read | If-Modified-Since If-Unmodified-Since Dopasowanie w przypadku If-None-Match x-ms-if-tags |
Pobieranie metadanych obiektu blob | Read | If-Modified-Since If-Unmodified-Since Dopasowanie w przypadku If-None-Match x-ms-if-tags |
Pobieranie właściwości obiektu blob | Read | If-Modified-Since If-Unmodified-Since Dopasowanie w przypadku If-None-Match x-ms-if-tags |
Pobieranie tagów obiektów blob (wersja 2019-12-12 lub nowsza) |
Read | x-ms-if-tags |
Pobieranie listy bloków | Read | x-ms-if-tags |
Pobieranie zakresów stron | Read | If-Modified-Since If-Unmodified-Since Dopasowanie w przypadku If-None-Match x-ms-if-tags |
Dzierżawienie obiektu blob | Write | If-Modified-Since If-Unmodified-Since Dopasowanie w przypadku If-None-Match x-ms-if-tags |
Kontener dzierżawy | Write | If-Modified-Since If-Unmodified-Since |
Umieść obiekt blob z adresu URL | Write | If-Modified-Since If-Unmodified-Since Dopasowanie w przypadku If-None-Match W przypadku warunków w źródłowym obiekcie blob: - x-ms-source-If-Modified-Since - x-ms-source-if-Unmodified-Since - x-ms-source-If-Match - x-ms-source-If-None-Match |
Wstawianie obiektu blob | Write | If-Modified-Since If-Unmodified-Since Dopasowanie w przypadku If-None-Match x-ms-if-tags |
Umieść blok z adresu URL (wersja 2018-03-28 lub nowsza) |
Write | x-ms-source-If-Modified-Since x-ms-source-If-Unmodified-Since x-ms-source-If-Match x-ms-source-If-None-Match |
Wdrażanie listy zablokowanych | Write | If-Modified-Since If-Unmodified-Since Dopasowanie warunkowe Dopasowanie if-none x-ms-if-tags |
Umieść stronę | Write | If-Modified-Since If-Unmodified-Since Dopasowanie warunkowe Dopasowanie if-none x-ms-if-tags |
Umieść stronę z adresu URL (wersja 2018-11-09 lub nowsza) |
Write | If-Modified-Since If-Unmodified-Since Dopasowanie warunkowe Dopasowanie if-none x-ms-if-tags |
Ustawianie metadanych obiektu blob | Write | If-Modified-Since If-Unmodified-Since Dopasowanie warunkowe Dopasowanie if-none x-ms-if-tags |
Ustawianie właściwości obiektu blob | Write | If-Modified-Since If-Unmodified-Since Dopasowanie warunkowe Dopasowanie if-none x-ms-if-tags |
Ustawianie listy ACL kontenerów | Write | If-Modified-Since If-Unmodified-Since |
Ustawianie metadanych kontenera | Write | If-Modified-Since |
Ustawianie tagów obiektów blob (wersja 2019-12-12 i nowsze) |
Write | x-ms-if-tags |
Ustawianie warstwy obiektu blob | Odczyt lub zapis | x-ms-if-tags |
Wykonywanie migawki obiektu blob | Read | If-Modified-Since If-Unmodified-Since Dopasowanie warunkowe Dopasowanie if-none x-ms-if-tags |
Ustawianie zasad niezmienności obiektów blob | Write | If-Unmodified-Since |
Następujące operacje danych usługi Blob Service nie obsługują obecnie nagłówków warunkowych:
Kody odpowiedzi HTTP dla operacji obsługujących nagłówki warunkowe
Jeśli żądanie zawiera nagłówek warunkowy, a określony warunek nie jest spełniony przez żądany zasób, usługa Blob zwraca kod odpowiedzi HTTP. Zwrócone kody odpowiedzi są zgodne ze specyfikacją protokołu HTTP/1.1 (RFC 2616).
Metody w bibliotece klienta platformy Azure .NET konwertują te kody odpowiedzi na błędy do obiektu StorageException.
Operacje odczytu
W poniższej tabeli przedstawiono kody odpowiedzi zwrócone dla warunku niezaspokojonego dla każdego nagłówka warunkowego, gdy operacja jest operacją odczytu. Operacje odczytu używają czasowników GET lub HEAD.
Nagłówek warunkowy | Kod odpowiedzi, jeśli warunek nie został spełniony |
---|---|
If-Modified-Since |
Nie zmodyfikowano (304 (nie zmodyfikowano)) |
If-Unmodified-Since |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
If-Match |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
If-None-Match |
Nie zmodyfikowano (304 (nie zmodyfikowano)) |
Zapoznaj się z powyższymi przykładami, aby uzyskać wyniki w przypadku używania wielu nagłówków w wersjach 2013-08-15 lub nowszych.
Operacje zapisu
W poniższej tabeli przedstawiono kody odpowiedzi zwrócone dla warunku niezaspokojonego dla każdego nagłówka warunkowego, gdy operacja jest operacją zapisu. Operacje zapisu używają czasowników PUT lub DELETE.
Nagłówek warunkowy | Kod odpowiedzi, jeśli warunek nie został spełniony |
---|---|
If-Modified-Since |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
If-Unmodified-Since |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
If-Match |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
If-None-Match |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
Operacje kopiowania
W poniższej tabeli przedstawiono kody odpowiedzi zwrócone dla warunku niezaspokojonego dla każdego nagłówka warunkowego, gdy operacja jest operacją kopiowania. Operacja kopiowania obiektu blob używa czasowników PUT.
Nagłówek warunkowy | Kod odpowiedzi, jeśli warunek nie został spełniony |
---|---|
If-Modified-Since |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
If-Unmodified-Since |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
If-Match |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
If-None-Match |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
x-ms-source-if-modified-since |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
x-ms-source-if-unmodified-since |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
x-ms-source-if-match |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
x-ms-source-if-none-match |
Warunek wstępny nie powiódł się (412 (niepowodzenie warunku wstępnego)) |
Operacje warunkowe tagów
Oprócz standardowych nagłówków warunkowych HTTP obsługiwanych przez usługę Blob, kilka operacji obsługuje również warunki dotyczące tagów w zasobie obiektu blob.
Nagłówek warunkowy | Opis |
---|---|
x-ms-if-tags |
Wersja 2019-12-12 i nowsza. Wartość TagsPredicate . Określ ten nagłówek, aby wykonać operację tylko wtedy, gdy predykat oblicza wartość względem true tagów obiektu blob. |
x-ms-source-if-tags |
Wersja 2019-12-12 i nowsza. Dotyczy tylko kopiowania obiektów blob. Wartość TagsPredicate . Określ ten nagłówek, aby wykonać operację tylko wtedy, gdy predykat oblicza wartość względem true tagów źródłowego obiektu blob. |
x-ms-if-tags
Jeśli nagłówek warunkowy lub x-ms-source-if-tags
znajduje się w żądaniu, a TagsPredicate
funkcja ocenia false
wartość , usługa Blob zwróci kod błędu 412 (Warunek wstępny nie powiodło się) dla operacji.
Obiekt wywołujący musi mieć uprawnienia do odczytywania tagów w obiekcie blob w celu używania x-ms-if-tags
nagłówków warunkowych lub x-ms-source-if-tags
.
Składnia predykatu tagów
Usługa Blob service obsługuje podzbiór gramatyki klauzuli SQL WHERE ANSI dla wartości nagłówka TagsPredicate
. Obsługiwane są następujące operatory:
Operator | Opis | Przykład |
---|---|---|
= |
Równe | Status = 'In Progress' |
<> |
Nie równa się | Status <> 'Done' |
> |
Większe niż | LastModified > '2018-06-18 20:51:26Z' |
>= |
Większe niż lub równe | Priority >= '05' |
< |
Mniejsze niż | Age < '032' |
<= |
Mniejsze niż lub równe | Reviewer <= 'Smith' |
AND |
Logiczne i | Name > 'C' AND Name < 'D' Age > '032' AND Age < '100' |
OR |
Logiczne lub | Status = 'Done' or LastModified > '2018-06-18 20:51:26Z' |
Wszystkie wartości tagów to ciągi, a obsługiwane operatory relacyjne binarne używają sortowania leksykograficznego wartości tagów. Aby obsługiwać typy danych innych niż ciągi, w tym liczby i daty, należy stosować odpowiednie formatowanie dopełniające i sortowanie. Wartości tagów muszą być ujęte w pojedyncze cudzysłowy.
Jeśli nazwy tagów są zwykłymi identyfikatorami SQL, mogą być obecne bez ucieczki; jeśli zawierają znaki specjalne, muszą być rozdzielane podwójnymi cudzysłowami (np. "TagName" = 'TagValue').
Wyrażenia mogą zawierać porównania dla wielu nazw tagów i wartości. Nawiasy ((
i )
) mogą służyć do grupowania wyrażeń logicznych i sterowania kolejnością kanoniczną operacji. Element TagsPredicate
może zawierać co najwyżej dziesięć (10) operacji logicznych.
Usługa magazynu odrzuci każde żądanie zawierające nieprawidłowe wyrażenie z kodem błędu 400 (nieprawidłowe żądanie).