Interagir com as APIs do Armazenamento do Azure

Concluído

O Armazenamento do Azure oferece uma API REST para trabalhar com os contentores e os dados armazenados em cada conta. Cada tipo de dados que você pode armazenar tem sua própria API independente. Lembre-se de que temos quatro tipos de dados específicos:

  • BLOBs para dados não estruturados, tais como ficheiros binários e de texto.
  • Filas para mensagens persistentes.
  • Tabelas para armazenamento estruturado de chaves/valores.
  • Ficheiros para partilhas de ficheiros SMB tradicionais.

Utilizar a API REST

As APIs REST de armazenamento são acessíveis de qualquer lugar na Internet por qualquer aplicativo que possa enviar uma solicitação HTTP/HTTPS e receber uma resposta HTTP/HTTPS.

Por exemplo, se você quisesse listar todos os blobs em um contêiner, criaria uma solicitação algo como:

GET https://[url-for-service-account]/?comp=list&include=metadata

Essa solicitação retorna um bloco XML com dados específicos da conta:

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults AccountName="https://[url-for-service-account]/">  
  <Containers>  
    <Container>  
      <Name>container1</Name>  
      <Url>https://[url-for-service-account]/container1</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 18:09:03 GMT</Last-Modified>  
        <Etag>0x8CAE7D0C4AF4487</Etag>  
      </Properties>  
      <Metadata>  
        <Color>orange</Color>  
        <ContainerNumber>01</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
    <Container>  
      <Name>container2</Name>  
      <Url>https://[url-for-service-account]/container2</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 17:26:40 GMT</Last-Modified>  
        <Etag>0x8CAE7CAD8C24928</Etag>  
      </Properties>  
      <Metadata>  
        <Color>pink</Color>  
        <ContainerNumber>02</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
    <Container>  
      <Name>container3</Name>  
      <Url>https://[url-for-service-account]/container3</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 17:26:40 GMT</Last-Modified>  
        <Etag>0x8CAE7CAD8EAC0BB</Etag>  
      </Properties>  
      <Metadata>  
        <Color>brown</Color>  
        <ContainerNumber>03</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
  </Containers>  
  <NextMarker>container4</NextMarker>  
</EnumerationResults>  

No entanto, essa abordagem requer análise manual e criação de pacotes HTTP para trabalhar com cada API. Por este motivo, o Azure disponibiliza bibliotecas de cliente previamente criadas que tornam mais fácil o trabalho com o serviço para estruturas e linguagens comuns.

Utilizar uma biblioteca de cliente

As bibliotecas de cliente podem economizar uma quantidade significativa de trabalho para desenvolvedores de aplicativos porque a API foi testada e geralmente fornece wrappers mais agradáveis em torno dos modelos de dados enviados e recebidos pela API REST.

A Microsoft tem bibliotecas de cliente do Azure que suportam muitas linguagens e estruturas, incluindo:

  • .NET
  • Java
  • Python
  • Node.js
  • Go


Logos of supported frameworks you can use with Azure.

Por exemplo, para obter a mesma lista de blobs em C#, poderíamos utilizar o seguinte fragmento de código:

string containerName = "...";
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);

var blobs = container.GetBlobs();
foreach (var blob in blobs)
{
    Console.WriteLine($"{blob.Name} --> Created On: {blob.Properties.CreatedOn:YYYY-MM-dd HH:mm:ss}  Size: {blob.Properties.ContentLength}");
}

Ou em JavaScript:

const containerName = '...';
const containerClient = blobServiceClient.getContainerClient(containerName);

let blobs = containerClient.listBlobsFlat();
for await (const blob of blobs) {
  console.log(`${blob.name} --> Created: ${blob.properties.createdOn}   Size: ${blob.properties.contentLength}`);
}

Nota

As bibliotecas de cliente são apenas wrappers finos em torno da API REST. Eles estão fazendo exatamente o que você faria se usasse os serviços Web diretamente. Estas bibliotecas também são open source, o que as torna muito transparentes. Para obter links para o código-fonte dessas bibliotecas no GitHub, consulte a seção Recursos adicionais no final deste módulo.

Em seguida, vamos adicionar suporte à biblioteca de cliente ao seu aplicativo.