Ten dokument pokazuje, jak grupować wywołania interfejsu API, aby zmniejszyć liczbę połączeń, które musi nawiązać klient. Przetwarzanie w grupach może zwiększyć wydajność aplikacji przez zmniejszenie liczby połączeń z siecią i zwiększenie przepustowości.
Omówienie
Każde połączenie utworzone przez klienta powoduje pewien narzut. Interfejs Google Slides API obsługuje grupowanie, aby umożliwić klientowi umieszczanie wielu obiektów żądań, z których każdy określa jeden typ żądania do wykonania, w jednym żądaniu zbiorczym. Żądanie zbiorcze może zwiększyć wydajność, łącząc wiele żądań podrzędnych w jedną prośbę do serwera i otrzymywanie jednej odpowiedzi.
Zachęcamy użytkowników, aby zawsze wysyłali wiele żądań w ramach jednego zbiorczego żądania. Oto kilka przykładów sytuacji, w których możesz użyć grupowania:
- dopiero zaczynasz korzystać z interfejsu API i masz dużo danych do przesłania.
- Musisz zaktualizować metadane lub właściwości, takie jak formatowanie, w wielu obiektach.
- Musisz usunąć wiele obiektów.
Limity, autoryzacja i zależności
Oto lista innych kwestii, które warto wziąć pod uwagę podczas aktualizacji zbiorczej:
- Każde żądanie zbiorcze, w tym wszystkie żądania podrzędne, jest liczone jako 1 żądanie interfejsu API w ramach limitu użycia.
- Prośba zbiorcza jest uwierzytelniana tylko raz. To jedno uwierzytelnianie dotyczy wszystkich obiektów w prośbie o zbiorcze aktualizacji.
- Serwer przetwarza żądania podrzędne w tej samej kolejności, w jakiej występują w żądaniu zbiorczym. Kolejne podzapytania mogą zależeć od działań podjętych podczas wcześniejszych podzapytań. Na przykład w ramach tego samego zbiorczego żądania użytkownicy mogą wstawić tekst do istniejącego dokumentu, a następnie nadać mu styl.
Szczegóły wsadu
Zbiorcze żądanie składa się z jednego wywołania metody batchUpdate
z wieloma podrzędnymi żądaniami, które na przykład dodają i formatują prezentację.
Każde żądanie jest weryfikowane przed zastosowaniem. Wszystkie podzapytania w ramach aktualizacji zbiorczej są stosowane w sposób atomowy. Oznacza to, że jeśli żądanie jest nieprawidłowe, cała aktualizacja kończy się niepowodzeniem i żadne z (potencjalnie zależnych) zmian nie zostaną zastosowane.
Niektóre odpowiedzi zawierają informacje o zgłoszonych żądaniach. Na przykład wszystkie żądania zbiorczego aktualizowania służące do dodawania obiektów zwracają odpowiedzi, dzięki którym możesz uzyskać dostęp do metadanych nowo dodanego obiektu, takich jak identyfikator lub tytuł.
Dzięki temu podejściu możesz utworzyć cały dokument Google za pomocą jednego interfejsu API, wysyłając prośbę o zbiorczą aktualizację z wieloma podzapytaniami.
Format żądania zbiorczego
Żądanie to pojedyncze żądanie JSON zawierające wiele zagnieżdżonych żądań podrzędnych z 1 wymaganym atrybutem: requests
. Zapytania są tworzone w tablicy pojedynczych zapytań. Każde żądanie używa JSON do reprezentowania obiektu żądania i zawierania jego właściwości.
Format odpowiedzi zbiorczej
Format odpowiedzi na żądanie zbiorcze jest podobny do formatu żądania. Odpowiedź serwera zawiera pełną odpowiedź pojedynczego obiektu odpowiedzi.
Właściwość głównego obiektu JSON ma nazwę replies
. Odpowiedzi są zwracane w tablicy, a każda odpowiedź na jedno z żądań zajmuje to samo miejsce w indeksie co odpowiadające mu żądanie. Niektóre żądania nie mają odpowiedzi, a odpowiedź w tym indeksie tablicy jest pusta.
Przykład
Poniższy przykładowy kod pokazuje użycie grupowania w interfejsie Slides API.
Żądanie
Ten przykładowy pakiet żądań pokazuje, jak:
Dodaj zasób
presentations.pages
do istniejącej prezentacji, używającinsertionIndex
1
, za pomocą metodyCreateSlideRequest
.Dodaj do nowego slajdu element
shapeType
typuTEXT_BOX
, używając metodyCreateShapeRequest
.Wstaw tekst „Hello World” do nowego pola za pomocą metody
InsertTextRequest
.
{ "requests":[ { "createSlide":{ "insertionIndex":1, "objectId":"newSlide" } }, { "createShape":{ "elementProperties":{ "pageObjectId":"newSlide", "size":{ "height":{ "magnitude":50, "unit":"PT" }, "width":{ "magnitude":200, "unit":"PT" } } }, "shapeType":"TEXT_BOX", "objectId":"newTextBox" } }, { "insertText":{ "objectId":"newTextBox", "text":"Hello World" } } ] }
Odpowiedź
Ta przykładowa odpowiedź zbiorcza zawiera informacje o tym, jak zostały zastosowane poszczególne żądania podrzędne w ramach żądania zbiorczego. Zwróć uwagę, że metoda InsertTextRequest
nie zawiera odpowiedzi, więc wartość indeksu tablicy w pozycji [2] składa się z pustych nawiasów klamrowych. W żądaniu zbiorczym wyświetla się właściwość WriteControl
, która pokazuje, jak były wykonywane żądania zapisu.
{ "requiredRevisionId": ID "presentationId": "", "replies":[ { "createSlide":{ "objectId":"newSlide" } }, { "createShape":{ "objectId":"newTextBox" } }, { } ], "writeControl":{ "requiredRevisionId": REVISION_ID } }