Опубликован: 30.05.2011 | Доступ: свободный | Студентов: 2366 / 213 | Оценка: 4.12 / 4.41 | Длительность: 12:00:00
Лекция 14:

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> пуст, то получены все результаты.

Список материалов для самостоятельного изучения

Блоки и списки

  1. http://blog.richard.parker.name/2010/06/30/an-introduction-to-windows-azure-for-busy-people/#BlocksAndPages
  2. http://msdn.microsoft.com/en-us/library/ee691964.aspx

Windows Azure Blob. Операции с Blob - объектами.

  1. http://msdn.microsoft.com/en-us/library/dd573356.aspx
  2. http://msdn.microsoft.com/ru-ru/library/ee872420.aspx
  3. http://docwiki.embarcadero.com/RADStudio/en/Windows_Azure_Blob_API
Роза Мальцева
Роза Мальцева
Игнат Гринько
Игнат Гринько

Примерно месяц назад получил на сайте код Дримспарк, сегодня вводил его на сайте Дримспарк, пишет: Недействительный код проверки. Проверьте правильность введенного кода. Код вводил методом: скопировать-вставить.