Windows Azure Blob, как список блоков. Примеры REST - запросов
Примеры REST запросов
Приведем примеры запросов для размещения блока PUT Block и чтения blob - объекта Get Blob. Примеры других REST-запросов можно найти по ссылкам в списке материалов для самостоятельного изучения.
В данных примерах имя учетной записи обозначено как <account>, работа производится с объектом "BVideo.mp4" в контейнере "video".
Также отметим, что для всех решений Windows Azure Storage введен новый HTTP-заголовок "x-ms-version". Все изменения в API хранилища регистрируются как версии с помощью этого заголовка.
Заголовок x-ms-version должен быть задан для всех запросов к Windows Azure Storage.
PUT Block
Ниже представлен пример REST-запроса для размещения блока размером 4МБ посредством операции PUT block. Параметр запроса "?comp=block" указывает на то, что это операция PUT block. Затем задается BlockID. Параметр Content-MD5 может быть задан для защиты от ошибок передачи по сети и обеспечения целостности. В данном случае, Content-MD5 – это контрольная сумма MD5 данных блока в запросе. Контрольная сумма проверяется на сервере, в случае несовпадения возвращается ошибка. Параметр Content-Length (Длина содержимого) определяет размер содержимого блока. Также в заголовке HTTP-запроса имеется заголовок авторизации, как показано ниже.
PUT <ref src="http://<account>.blob.core.windows.net/video/ BVideo.mp4?comp=block &blockid=BlockId1 &timeout=60 HTTP/1.1 Content-Length: 4194304Content-MD5" type="url">: HUXZLQLMuI/KZ5KDcJPcOA==Authorization: SharedKey <account>: <key>= x-ms-date: Mon, 6 Apr 2009 17:00:25 GMTx-ms-version: 2009-04-14 <block data>
GET Blob
Нижеследующий запрос обеспечит извлечение всего содержимого заданного blob. Если для контейнера, которому принадлежит blob (в данном примере "video"), задана политика совместного использования "Private", для получения blob необходимо пройти аутентификацию. Если задана политика совместного использования "Public-Read", аутентификация не требуется, и заголовок аутентификации в заголовке запроса не нужен.
GET <ref src="http://<account>.blob.core.windows.net/video/ BVideo.mp4HTTP/1.1Authorization" type="url"/>: SharedKey <account>:<key>х-ms-date: Mon, 6 Apr 2009 17:00:25 GMTx-ms-version: 2009-04-14
Интерфейс перечисления объектов blob - контейнера
Windows Azure Blob поддерживает перечисление объектов контейнера бинарных объектов. Интерфейс ListBlobs поддерживает параметры префикса ( prefix ) и разделителя( delimeter ), что делает возможным формирование иерархического перечня объектов. К примеру, имеется Blob-контейнер "Photos" бинарных объектов с именами:
Work|MyFirstDay.jpeg
Work|Boss.jpeg
Work|NewProjectStart.jpeg
Friends|Party_May.jpeg
Friends|NewYear2011.jpeg
Friends|WeekendApril.jpeg
При этом "|" используется как разделитель, для обозначения тематики фотографий, т.е. для создания иерархии имен. Запрос на получение всех имен "каталогов" будет выглядеть следующим образом:
GET <ref src="http://<account>.blob.windows.net/Photos ?comp=list&delimeter=|" type="url"/> Ответ на запрос: <BlobPrefix>Work</BlobPrefix> <BlobPrefix>Friends</BlobPrefix>
Тег < BlobPrefix > указывает на то, что выведенное значение является префиксом имени бинарного объекта, а не именем целиком. Повторяющиеся префиксы возвращаются только один раз. Список бинарных объектов, содержащихся в одном "каталоге", можно получить сочетанием параметров "prefix" и "delimiter", следующим запросом:
GET http://<account>.blob.windows.net/Photos?comp=list &prefix=Work/&delimeter=| Ответ на запрос: <Blob> Work|MyFirstDay.jpeg</Blob> <Blob> Work|Boss.jheg </Blob> <Blob> Work|NewProjectStart.jpeg </Blob>
Тег < Blob > указывает на то, что возвращенное имя является полным именем бинарного объекта.
Также интерфейс ListBlobs поддерживает возможность возвращения определенного количества записей, при помощи параметра "maxresult".
Возвращаясь к нашему примеру, следующий запрос вернет первую набор данных, при установленном параметре maxresult=2:
GET <ref src="http://<account>.blob.windows.net/Photos ?comp=list&prefix=Work&maxresult=2" type="url"/> Ответ на запрос: <Blob> Work|MyFirstDay.jpeg</Blob> <Blob> Work|Boss.jheg </Blob> <NextMarker> Marker1 </NextMarker>
В теге <NextMarker> возвращается непрозрачный маркер, который может быть использован для возвращения следующих результатов:
GET <ref src="http://<account>.blob.windows.net/Photos ?comp=list&prefix=Work&maxresult=2&marker= " type="url"/> Marker1 Ответ на запрос: <Blob> Work|NewProjectStart.jpeg </Blob> <NextMarker> </NextMarker>
Если тег <NextMarker> пуст, то получены все результаты.
Список материалов для самостоятельного изучения
Блоки и списки
- http://blog.richard.parker.name/2010/06/30/an-introduction-to-windows-azure-for-busy-people/#BlocksAndPages
- http://msdn.microsoft.com/en-us/library/ee691964.aspx
Windows Azure Blob. Операции с Blob - объектами.