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-Matchelementu , 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-Matchelementu , 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-Sincenagłówki i .If-Unmodified-SinceIf-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-Sincenagłówki , If-None-MatchIf-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 i If-Modified-Since , żądanie jest oceniane na podstawie kryteriów określonych w elemecie If-None-Match.

  • Jeśli żądanie określa zarówno If-Match nagłówki, jak i If-Unmodified-Since , żądanie jest oceniane na podstawie kryteriów określonych w elemecie If-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 falsewartość , 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).

Zobacz też

Pojęcia dotyczące usługi Blob Service