Interagir avec les API Stockage Azure

Effectué

Stockage Azure fournit une API REST qui permet d’utiliser les conteneurs et les données stockées dans chaque compte. Chaque type de données que vous pouvez stocker a sa propre API indépendante. Rappelez-vous que nous avons quatre types de données spécifiques :

  • Les objets blob pour les données non structurées comme les fichiers binaires et texte.
  • Les files d’attente pour une messagerie persistante.
  • Les tables pour le stockage structuré de clés/valeurs.
  • Les fichiers pour des partages de fichiers SMB traditionnels.

Utiliser l’API REST

Les API REST de stockage sont accessibles à partir de n’importe où sur Internet, par n’importe quelle application pouvant envoyer une requête HTTP/HTTPS et recevoir une réponse HTTP/HTTPS.

Par exemple, si vous voulez lister tous les blobs dans un conteneur, vous créez une demande de ce type :

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

Cette requête retourne un bloc XML avec des données propres au compte :

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

Toutefois, cette approche nécessite une analyse manuelle et la création de paquets HTTP pour fonctionner avec chaque API. Pour cette raison, Azure fournit des bibliothèques clientes prédéfinies qui facilitent l’utilisation du service pour les frameworks et les langages courants.

Utiliser une bibliothèque de client

Les bibliothèques de client font gagner un temps considérable aux développeurs d’applications, car l’API a été testée et donne souvent de meilleurs wrappers pour les modèles de données envoyés et reçus par l’API REST.

Microsoft propose des bibliothèques de client Azure qui prennent en charge de nombreux langages et frameworks, notamment :

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


Logos of supported frameworks you can use with Azure.

Par exemple, pour récupérer la même liste d’objets blob en C#, nous pourrions utiliser l’extrait de code suivant :

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 en 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}`);
}

Notes

Les bibliothèques de client sont simplement des wrappers fins autour de l’API REST. Elles font exactement ce que vous faites quand vous utilisez les services web directement. Ces bibliothèques sont également open source, ce qui les rend très transparentes. Pour obtenir les liens vers le code source de ces bibliothèques sur GitHub, consultez la section Ressources supplémentaires à la fin de ce module.

Ajoutons maintenant la prise en charge d’une bibliothèque de client à notre application.