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 (Niepowodzenie warunku wstępnego) | 412 (Niepowodzenie warunku wstępnego) |
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 | Pojedynczy 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 (Niepowodzenie warunku wstępnego) |
If-None-Match |
304 (niezmodyfikowane) | 412 (Niepowodzenie warunku wstępnego) |
If-Unmodified-Since |
412 (Niepowodzenie warunku wstępnego) | 412 (Niepowodzenie warunku wstępnego) |
If-Match |
200 (OK) | 412 (Niepowodzenie warunku wstępnego) |
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 (Niepowodzenie warunku wstępnego) |
If-None-Match |
200 (OK) | 412 (Niepowodzenie warunku wstępnego) |
If-Unmodified-Since |
200 (OK) | 412 (Niepowodzenie warunku wstępnego) |
If-Match |
412 (Niepowodzenie warunku wstępnego) | 412 (Niepowodzenie warunku wstępnego) |
If-Modified-Since |
304 (niezmodyfikowane) | 412 (Niepowodzenie warunku wstępnego) |
If-None-Match |
200 (OK) | 412 (Niepowodzenie warunku wstępnego) |
If-Unmodified-Since |
412 (Niepowodzenie warunku wstępnego) | 412 (Niepowodzenie warunku wstępnego) |
If-Match |
412 (Niepowodzenie warunku wstępnego) | 412 (Niepowodzenie warunku wstępnego) |
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 (Niepowodzenie warunku wstępnego) |
If-None-Match |
304 (niezmodyfikowane) | 412 (Niepowodzenie warunku wstępnego) |
If-Unmodified-Since |
412 (Niepowodzenie warunku wstępnego) | 412 (Niepowodzenie warunku wstępnego) |
If-Match |
200 (OK) | 412 (Niepowodzenie warunku wstępnego) |
Określanie nagłówków warunkowych dla operacji odczytu w wersjach wcześniejszych niż 2013-08-15 i dla operacji zapisu (wszystkie wersje)
Podczas wywoływania operacji odczytu usługi Blob Service (Pobierz obiekty blob i Pobierz właściwości obiektu blob) z wersjami wcześniejszymi niż 2013-08-15 oraz podczas wywoływania dowolnej operacji zapisu niezależnie od wersji pamiętaj 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 wIf-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 wIf-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ślenie 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 i nowsze zwracają cytowany element ETag, ale starsze wersje nie. Upewnij się, że aplikacja może przetwarzać oba formaty ETag przed ich oceną.
Protokół RFC 2616 zezwala na wiele wartości elementu ETag w jednym nagłówku, ale żądania do usługi Blob Service mogą zawierać tylko jedną wartość elementu 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, które obsługują 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 warunkowe Dopasowanie if-none x-ms-if-tags |
Dołączanie bloku 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 |
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 | Write | 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 Service kilka operacji obsługuje również warunki względem tagów w zasobie obiektu blob.
Nagłówek warunkowy | Opis |
---|---|
x-ms-if-tags |
Wersja 2019-12-12 i nowsze.
TagsPredicate Wartość. Określ ten nagłówek, aby wykonać operację tylko wtedy, gdy predykat oblicza true wartość względem tagów obiektu blob. |
x-ms-source-if-tags |
Wersja 2019-12-12 i nowsze. Dotyczy tylko kopiowania obiektu blob.
TagsPredicate Wartość. Określ ten nagłówek, aby wykonać operację tylko wtedy, gdy predykat zwróci 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 service zwróci kod błędu 412 (Niepowodzenie warunku wstępnego) 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 podzestaw gramatyki klauzuli ANSI SQL WHERE 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 |
Wartość logiczna 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łnienia i sortowanie. Wartości tagów muszą być ujęte w apostrofy.
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 kontrolowania kolejności kanonicznej operacji. Może TagsPredicate
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).