2017-01-31 1 views
0

Hallo Leute, ich baue einen Client, der mit der Azure Storage Rest API interagiert.Azure Rest Api Listencontainer: Parametermarkierung

Ich wollte durch Dokumentation https://docs.microsoft.com/ru-ru/rest/api/storageservices/fileservices/list-containers2:

Und hat nicht die Verwendung von Parameter-Präfix und Marker zu verstehen, die zusammen mit Azure Anfrage gerne zugesandt werden kann.

Dort heißt es:

Präfix

Optional. Filtert die Ergebnisse so, dass nur Container zurückgegeben werden, deren Name mit dem angegebenen Präfix beginnt.

Marker

Optional. Ein Zeichenfolgenwert, der den Teil der Liste der Container angibt, die beim nächsten Auflistungsvorgang zurückgegeben werden sollen. Die Operation gibt den NextMarker-Wert innerhalb des Antworthauptteils zurück, wenn der Auflistungsvorgang nicht alle Container zurückgegeben hat, die für die Auflistung mit der aktuellen Seite aufgelistet werden sollen. Der NextMarker-Wert kann als Wert für den Marker-Parameter in einem nachfolgenden Aufruf verwendet werden, um die nächste Seite von Listenelementen anzufordern.

Der Markerwert ist für den Client undurchsichtig.

Mit Präfix, denke ich:

Wenn ich dir Struktur:

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

Wenn ich Präfix Containernamen als "Kampf" geben. Es sollte fightVideo zurückgeben.

Aber ich bin mir nicht sicher.

Und für Marker verstehe ich nicht, was es verwendet?

Kann jemand die Verwendung von Prefix und Marker mit Beispielen erklären?

Antwort

2

Im Zusammenhang mit der Auflistung von Containern, wenn Sie prefix Parameter angeben, werden die Namen der Container aufgelistet, die mit diesem Präfix beginnen. Es hat nichts mit der Auflistung von Blobs zu tun.

List blobs Die Operation unterstützt auch diesen Parameter prefix. Wenn Sie diesen Parameter angeben, werden die Namen der Blobs aufgelistet, die mit diesem Präfix beginnen.

So das Beispiel, das Sie gegeben haben, ist für Blobs Liste und wenn Sie flight als Präfix dort angeben, werden Sie zurück fightVideo/subFolder/current/video001.mpg und fightVideo/subFolder/current/video002.mpg als Antwort erhalten, aber nicht, wenn Sie anrufen Liste Container mit diesem Präfix.

In Bezug auf ist Kalyans Erklärung korrekt, aber lassen Sie mich ein wenig mehr dazu hinzufügen.

Im Wesentlichen Azure Storage Service ist ein gemeinsam genutzter Dienst und Sie können es einfach nicht bitten, alle Ergebnisse in einem Schritt zurückgeben (wenn wir eine Analogie von SQL-Welt nehmen würden, können Sie einfach nicht tun SELECT * FROM TABLE Art von Sache). Jeder Anfrage an den Dienst wird ein vordefiniertes Timeout zugewiesen und die Antwort würde die in dieser Zeit abgerufenen Elemente enthalten + optional ein Token, wenn der Dienst denkt, dass mehr Daten verfügbar sind. Dieses Token heißt continuation token. Um den nächsten Satz von Elementen zu erhalten, müssten Sie dieses Fortsetzungstoken im Marker-Parameter bei Ihrer nächsten Anfrage übergeben.

Jeder Aufruf des Speicherdienstes versucht, eine vordefinierte maximale Anzahl von Elementen zurückzugeben. Für die Auflistung von Blobcontainern/Blobs beträgt dieses Limit 5000 Elemente. Bei der Auflistung von Tabellen/Entitäten beträgt dieses Limit 1000 Elemente. Wenn sich in Ihrem Konto mehr Elemente befinden, gibt Ihnen der Datenspeicherdienst zusätzlich ein Fortsetzungstoken zurück, das Ihnen mitteilt, dass mehr Daten verfügbar sind.

Bitte beachten Sie, dass obwohl das Limit vorhanden ist, Sie nicht immer davon ausgehen können, dass Sie diese Anzahl von Datensätzen erhalten. Aufgrund einer Reihe von Bedingungen ist es durchaus möglich, dass Sie keine Daten erhalten, aber trotzdem ein Fortsetzungs-Token erhalten. Also muss Ihr Code auch mit dieser Bedingung umgehen.

1

Wenn zu viele Blobs aufgelistet sind, enthält die Antwort das NextMarker-Element.

Die REST-API-Dokumentation erwähnt, dass der Markerwert in einem nachfolgenden Aufruf verwendet werden kann, um den nächsten Satz von Listenelementen anzufordern.

Sie können sich einen Marker als Paginator-Index vorstellen.

Verwandte Themen