Interagire con le API di Archiviazione di Azure

Completato

Archiviazione di Azure offre un'API REST da usare con i contenitori e i dati archiviati in ogni account. Ogni tipo di dati che è possibile archiviare ha una propria API indipendente. È importante ricordare che sono disponibili quattro tipi di dati specifici:

  • BLOB per i dati non strutturati, ad esempio file binari e file di testo.
  • Code per la messaggistica persistente.
  • Tabelle per l'archiviazione strutturata di chiavi/valori.
  • File per le condivisioni file SMB tradizionali.

Usare l'API REST

Le API REST di archiviazione sono accessibili via Internet da qualsiasi posizione e da qualsiasi app in grado di inviare una richiesta HTTP/HTTPS e di ricevere una risposta HTTP/HTTPS.

Per elencare tutti i BLOB in un contenitore, ad esempio, è possibile creare una richiesta simile alla seguente:

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

Questa richiesta restituisce un blocco XML con i dati specifici per l'account:

<?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>  

Questo approccio, tuttavia, richiede un'analisi manuale e la creazione di pacchetti HTTP per ogni API. Per questo motivo, Azure offre librerie client predefinite che semplificano l'uso del servizio per i linguaggi e i framework più diffusi.

Usare una libreria client

Le librerie client consentono di ridurre notevolmente il lavoro degli sviluppatori di app poiché l'API è stata testata e spesso offre wrapper migliori per i modelli di dati inviati e ricevuti dall'API REST.

Microsoft offre librerie client di Azure che supportano numerosi linguaggi e framework, tra cui:

  • .NET
  • Java
  • Python
  • Node.JS
  • Go


Logos of supported frameworks you can use with Azure.

Ad esempio, per recuperare lo stesso elenco di BLOB in C# è possibile usare il frammento di codice seguente:

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}");
}

O in 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

Le librerie client sono semplicemente wrapper leggeri per l'API REST. Eseguono esattamente le stesse operazioni eseguite quando si usano direttamente i servizi Web. Queste librerie sono anche open source e sono quindi molto trasparenti. Vedere la sezione Risorse aggiuntive alla fine di questo modulo per i collegamenti al codice sorgente per queste librerie su GitHub.

È ora possibile aggiungere all'app il supporto delle librerie client.