与 Azure 存储 API 交互

已完成

Azure 存储提供 REST API 以与存储在每个帐户中的容器和数据配合使用。 可以存储的每种类型的数据都有其自己的独立 API。 回想一下,我们有四种特定的数据类型:

  • Blob:适用于非结构化数据,例如二进制文件和文本文件。
  • 队列:适用于持久性消息传送。
  • :适用于对键/值进行结构化存储。
  • 文件:适用于传统的 SMB 文件共享。

使用 REST API

可以从任何位置在 Internet 上访问存储 REST API,方法是通过任何能够发送 HTTP/HTTPS 请求和接收 HTTP/HTTPS 响应的应用访问。

例如,要列出容器中的所有 Blob,可以创建类似于以下内容的请求:

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

此请求返回一个包含特定于帐户的数据的 XML 块:

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

但是,此方法需要手动分析和创建 HTTP 数据包才能使用每个 API。 出于这个原因,Azure 提供了预先构建的客户端库,对于常用语言和框架来说,此类库可以实现更轻松地使用服务。

使用客户端库

客户端库可以为应用开发人员节省大量工作,因为 API 经过了测试,并且通常会为通过 REST API 发送和接收的数据模型提供更好的包装器。

Microsoft 提供的 Azure 客户端库支持多种语言和框架,包括:

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


Logos of supported frameworks you can use with Azure.

例如,若要以 C# 检索同一 Blob 列表,可以使用以下代码片段:

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

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

注意

客户端库仅仅是基于 REST API 的瘦包装器。 它们执行的操作与你直接使用 Web 服务时是一样的。 这些库也是开源的,因此透明度高。 如需这些库在 GitHub 上的源代码的链接,请参阅此模块末尾的“其他资源”部分。

接下来,为应用添加客户端库支持。