Interakcja z interfejsami API usługi Azure Storage

Ukończone

Usługa Azure Storage udostępnia interfejs API REST, który umożliwia pracę z kontenerami i danymi przechowywanymi na każdym koncie. Każdy typ danych, które można przechowywać, ma własny niezależny interfejs API. Pamiętaj, że są cztery typy danych:

  • Obiekty blob na potrzeby danych bez struktury, takich jak pliki binarne i tekstowe.
  • Kolejki na potrzeby stałej obsługi komunikatów.
  • Tabele na potrzeby magazynu strukturalnego kluczy/wartości.
  • Pliki na potrzeby tradycyjnych udziałów plików SMB.

Korzystanie z interfejsu API REST

Interfejsy API REST usługi Storage są dostępne z dowolnego miejsca w Internecie przez dowolną aplikację, która może wysyłać żądanie HTTP/HTTPS i odbierać odpowiedź HTTP/HTTPS.

Jeśli na przykład chcesz wyświetlić listę wszystkich obiektów blob w kontenerze, utwórz żądanie podobne do następującego:

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

To żądanie zwraca blok XML z danymi specyficznymi dla konta:

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

Jednak takie podejście wymaga ręcznego analizowania i tworzenia pakietów HTTP do pracy z każdym interfejsem API. Z tego powodu platforma Azure udostępnia wstępnie utworzone biblioteki klienta, które ułatwiają pracę z usługą w ramach popularnych języków i struktur.

Używanie biblioteki klienta

Biblioteki klienckie mogą zaoszczędzić znaczną ilość pracy dla deweloperów aplikacji, ponieważ interfejs API został przetestowany i często zapewnia lepsze otoki wokół modeli danych wysyłanych i odbieranych przez interfejs API REST.

Firma Microsoft ma biblioteki klienckie platformy Azure, które obsługują wiele języków i platform, w tym:

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


Logos of supported frameworks you can use with Azure.

Aby na przykład pobrać tę samą listę obiektów blob w języku C#, można użyć następującego fragmentu kodu:

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

Natomiast w języku 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}`);
}

Uwaga

Biblioteki klienckie są po prostu cienkimi otokami interfejsu API REST. Robią dokładnie to, co należy zrobić, jeśli bezpośrednio korzystasz z usług internetowych. Te biblioteki są również typu open source, co czyni je bardzo przejrzystymi. Aby uzyskać linki do kodu źródłowego tych bibliotek w usłudze GitHub, zobacz sekcję Dodatkowe zasoby na końcu tego modułu.

Następnie dodajmy obsługę biblioteki klienta do aplikacji.