In diesem Dokument erfahren Sie, wie Sie API-Aufrufe in einem Batch zusammenfassen, um die Anzahl der Verbindungen zu reduzieren, die Ihr Client herstellen muss. Durch Batchverarbeitung kann die Effizienz einer Anwendung verbessert werden, da die Anzahl der Netzwerk-Roundtrips verringert und der Durchsatz erhöht wird.
Übersicht
Jede Verbindung, die der Client herstellt, führt zu einem bestimmten Overhead. Die Google Docs API unterstützt Batchanfragen, damit Ihr Client mehrere Anfrageobjekte, die jeweils einen einzelnen auszuführenden Anfragetyp angeben, in einer einzelnen Batchanfrage zusammenfassen kann. Eine Batchanfrage kann die Leistung steigern, indem mehrere untergeordnete Anfragen in einem einzigen Aufruf an den Server kombiniert werden, der dann eine einzige Antwort zurückgibt.
Wir empfehlen Nutzern, immer mehrere Anfragen zusammenzufassen. Hier einige Beispiele für Situationen, in denen Sie Batchanfragen verwenden können:
- Sie haben gerade mit der Verwendung der API begonnen und müssen viele Daten hochladen.
- Sie müssen Metadaten oder Eigenschaften wie die Formatierung für mehrere Objekte aktualisieren.
- Sie müssen viele Objekte löschen.
Beschränkungen, Autorisierung und Abhängigkeiten
Hier finden Sie eine Liste mit weiteren Aspekten, die Sie bei der Batch-Aktualisierung berücksichtigen sollten:
- Jede Batchanfrage, einschließlich aller untergeordneten Anfragen, wird auf Ihr Nutzungskontingent als eine API-Anfrage angerechnet.
- Eine Batchanfrage wird nur einmal authentifiziert. Diese einmalige Authentifizierung gilt für alle Batch-Update-Objekte in der Anfrage.
- Der Server verarbeitet die untergeordneten Anfragen in derselben Reihenfolge, in der sie in der Batchanfrage aufgeführt sind. Letztere untergeordnete Anfragen können von Aktionen abhängen, die bei früheren untergeordneten Anfragen ausgeführt wurden. Nutzer können beispielsweise in derselben Batchanfrage Text in ein vorhandenes Dokument einfügen und ihn dann formatieren.
Batchdetails
Eine Batchanfrage besteht aus einem batchUpdate
-Methodenaufruf mit mehreren untergeordneten Anfragen, um beispielsweise ein Dokument hinzuzufügen und dann zu formatieren.
Jede Anfrage wird validiert, bevor sie angewendet wird. Alle untergeordneten Anfragen im Batch-Update werden in kleinstmöglichen Schritten angewendet. Wenn eine Anfrage ungültig ist, schlägt die gesamte Aktualisierung fehl und keine der (möglicherweise abhängigen) Änderungen wird angewendet.
Bei einigen Anfragen werden Antworten mit Informationen zu den angewendeten Anfragen zurückgegeben. Beispielsweise geben alle Batch-Update-Anfragen zum Hinzufügen von Objekten Antworten zurück, sodass Sie auf die Metadaten des neu hinzugefügten Objekts zugreifen können, z. B. auf die ID oder den Titel.
Mit diesem Ansatz können Sie ein ganzes Google-Dokument mit einer API-Batchaktualisierungsanfrage mit mehreren untergeordneten Anfragen erstellen.
Format einer Batchanfrage
Eine Anfrage ist eine einzelne JSON-Anfrage, die mehrere verschachtelte Unteranfragen mit einer erforderlichen Property enthält: requests
. Die Anfragen werden in einem Array aus einzelnen Anfragen erstellt. In jeder Anfrage wird JSON verwendet, um das Anfrageobjekt und seine Attribute darzustellen.
Format einer Batchantwort
Das Antwortformat für eine Batchanfrage ähnelt dem Anfrageformat. Die Antwort des Servers enthält eine vollständige Antwort des einzelnen Antwortobjekts.
Das Attribut des Haupt-JSON-Objekts heißt replies
. Die Antworten werden in einem Array zurückgegeben. Jede Antwort auf eine der Anfragen hat denselben Index wie die entsprechende Anfrage. Einige Anfragen haben keine Antworten und die Antwort an diesem Arrayindex ist leer.
Beispiel
Das folgende Codebeispiel zeigt die Verwendung von Batching mit der Docs API.
Anfrage
In dieser Beispiel-Batchanfrage wird Folgendes gezeigt:
Fügen Sie den Text „Hello World“ am Anfang eines vorhandenen Dokuments mit dem Index
location
von1
ein. Verwenden Sie dazuInsertTextRequest
.Aktualisieren Sie das Wort „Hallo“ mit dem Befehl
UpdateTextStyleRequest
. MitstartIndex
undendIndex
wird dierange
von formatiertem Text innerhalb des Segments definiert.Mit
textStyle
wird die Schriftart für das Wort „Hallo“ auf fett und die Farbe auf Blau festgelegt.Mit dem Feld
WriteControl
können Sie steuern, wie Schreibanfragen ausgeführt werden. Weitere Informationen finden Sie unter Statuskonsistenz mit WriteControl herstellen.
{ "requests":[ { "insertText":{ "location":{ "index":1, "tabId":TAB_ID }, "text":"Hello World" } }, { "updateTextStyle":{ "range":{ "startIndex":1, "endIndex":6 }, "textStyle":{ "bold":true, "foregroundColor":{ "color":{ "rgbColor":{ "blue":1 } } } }, "fields":"bold,foreground_color" } } ], "writeControl": { "requiredRevisionId": "REQUIRED_REVISION_ID" } }
Ersetzen Sie TAB_ID und REQUIRED_REVISION_ID durch die Tab-ID bzw. die Revisions-ID des Dokuments, auf das sich die Schreibanfrage bezieht.
Antwort
In dieser Beispiel-Batchantwort sehen Sie, wie die einzelnen untergeordneten Anfragen in der Batchanfrage angewendet wurden. Weder InsertTextRequest
noch UpdateTextStyleRequest
enthalten eine Antwort. Daher bestehen die Indexwerte des Arrays an den Positionen [0] und [1] aus leeren geschweiften Klammern. Die Batchanfrage enthält das WriteControl
-Objekt, das zeigt, wie die Anfragen ausgeführt wurden.
{ "replies":[ {}, {} ], "writeControl":{ "requiredRevisionId":`REQUIRED_REVISION_ID` }, "documentId":`DOCUMENT_ID` }