2017-01-31 8 views
0

こんにちは私はAzure Storage Rest APIと相互作用するクライアントを構築しています。Azure Rest APIリストコンテナ:パラメータマーカー

私はドキュメントhttps://docs.microsoft.com/ru-ru/rest/api/storageservices/fileservices/list-containers2を通過した

そしてAzureの要求と共に送信することができ、パラメータのプレフィックスとマーカーの使用を理解していませんでした。

それは言う:

オプション

接頭辞。結果をフィルタリングして、指定した接頭辞で始まる名前が のコンテナのみを返します。

マーカー

オプション。次のリスト操作で返される コンテナのリストの部分を識別する文字列値。 リスティング操作で、残りのすべてのコンテナが返されずに残っている場合は、 操作は応答本体内のNextMarker値を返します。 は現在のページで表示されます。 NextMarker値は、リスト項目の次のページ を要求する後続の呼び出しで、マーカーパラメーターに値 として使用できます。

マーカー値は、クライアントに対して不透明です。接頭辞で

、私は思う:

私はディレクトリ構造を持っている場合:私は "戦い" としてプレフィックスコンテナ名を与えると

file01.txt 
images/image01.jpg 
images/folder/image001.jpg 
fightVideo/subFolder/current/video001.mpg 
fightVideo/subFolder/current/video002.mpg 

を。それは fightVideoを返す必要があります。

しかしわかりません。

マーカーについては、私はその使用方法を理解していませんか?

プレフィックスとマーカーの使用例を説明できますか?

答えて

2

あなたがprefixパラメータを指定した場合、それはそのプレフィックス値で開始したのコンテナ名をリストします。これは、リストの塊とは何の関係もありません。

List blobsオペレーションもこのprefixパラメータをサポートしています。このパラメータを指定すると、そのプレフィックス値で始まるblobの名前がリストされます。

だから、あなたが与えている例では、ブロブを一覧表示するためのもので、あなたがそこに接頭辞としてflightを指定するときは、この接頭辞を持つリストコンテナを呼び出すときに、あなたが戻ってfightVideo/subFolder/current/video001.mpgfightVideo/subFolder/current/video002.mpg応答ではなくなります。

についてについては、Kalyanの説明は間違いありませんが、もう少し詳しく説明します。

Azure Storage Serviceは共有サービスであり、すべての結果を一度に返すように求めることはできません(SQLワールドから類推すれば、単にSELECT * FROM TABLEのことはできません) )。サービスへの各リクエストには事前定義されたタイムアウトが割り当てられ、応答にはその時間にフェッチされたアイテムが含まれます。このトークンはcontinuation tokenと呼ばれます。次のアイテムセットを取得するには、次のリクエストでmarkerパラメータにこの継続トークンを渡す必要があります。

ストレージサービスを呼び出すたびに、あらかじめ定義された最大数のアイテムが返されます。ブロブコンテナ/ブロブをリストする場合、この制限は5000個です。リスティングテーブル/エンティティの場合、この制限は1000項目です。あなたのアカウントに他のアイテムがある場合、このデータストレージサービスとは別に、より多くのデータがあることを示す継続トークンが返されます。

制限はありますが、これらのレコード数を取得するとは必ずしも思えません。いくつかの条件に基づいて、データを取り戻さずに引き続き継続トークンを受け取る可能性があります。したがって、あなたのコードはこの条件も処理する必要があります。

1

リストするブロブが多すぎる場合、応答にはNextMarker要素が含まれます。

<?xml version="1.0" encoding="utf-8"?> 
<EnumerationResults ServiceEndpoint="https://myaccount.blob.core.windows.net"> 
    <Prefix>string-value</Prefix> 
    <Marker>string-value</Marker> 
    <MaxResults>int-value</MaxResults> 
    <Containers> 
    <Container> 
     <Name>container-name</Name> 
     <Properties> 
     <Last-Modified>date/time-value</Last-Modified> 
     <Etag>etag</Etag> 
     <LeaseStatus>locked | unlocked</LeaseStatus> 
     <LeaseState>available | leased | expired | breaking | broken</LeaseState> 
     <LeaseDuration>infinite | fixed</LeaseDuration> 
     <PublicAccess>container | blob</PublicAccess>  
     </Properties> 
     <Metadata> 
     <metadata-name>value</metadata-name> 
     </Metadata> 
    </Container> 
    </Containers> 
    <NextMarker>marker-value</NextMarker> 
</EnumerationResults> 

REST APIドキュメントは、マーカー値は、リスト項目の次のセットを要求するために、後続の呼び出しで使用することができることを言及しています。

あなたはpaginatator指標としてマーカーを想像することができます。コンテナをリストの文脈では

関連する問題