Chaque connexion HTTP établie par votre application entraîne une certaine quantité de frais généraux. Cette bibliothèque accepte les requêtes par lot, ce qui permet à votre application d'intégrer plusieurs appels d'API dans une seule requête HTTP. Voici quelques exemples de situations dans lesquelles l'utilisation de requêtes par lot peut s'avérer utile :
- Vous avez beaucoup de petites requêtes à effectuer et vous souhaitez réduire au maximum la surcharge des requêtes HTTP.
- Un utilisateur a modifié des données lorsque votre application était hors connexion. Celle-ci doit donc synchroniser ses données locales avec le serveur en envoyant un grand nombre de mises à jour et de suppressions.
Remarque: Vous êtes limité à 1 000 appels dans une seule requête par lot. Si vous devez effectuer plus d'appels que cela, utilisez plusieurs requêtes par lot.
Remarque: Vous ne pouvez pas utiliser d'objet d'importation multimédia dans une requête par lot.
Détails
Pour créer des requêtes par lot, vous devez instancier un objet BatchRequest
, puis appeler la méthode Queue
pour chaque requête à exécuter.
Avec chaque requête, transmettez un rappel à appeler lorsque votre application reçoit la réponse à cette requête.
Les arguments de la fonction de rappel sont les suivants:
- contenu
- Réponse du contenu, ou
null
si la requête a échoué. - error
- Erreur, ou
null
si la requête a abouti. - index
- Index de la requête individuelle.
- message
- Message HTTP complet incluant tous ses en-têtes et son contenu.
ExecuteAsync
pour les effectuer.
Dans l'extrait de code suivant, deux requêtes API sont regroupées dans une seule requête HTTP, et chaque requête API reçoit un rappel:
UserCredential credential; using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read)) { credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, new[] { CalendarService.Scope.Calendar }, "user", CancellationToken.None, new FileDataStore("Calendar.Sample.Store")); } // Create the service. var service = new CalendarService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "Google Calendar API Sample", }); // Create a batch request. var request = new BatchRequest(service); request.Queue<CalendarList>(service.CalendarList.List(), (content, error, i, message) => { // Put your callback code here. }); request.Queue<Event>(service.Events.Insert( new Event { Summary = "Learn how to execute a batch request", Start = new EventDateTime() { DateTime = new DateTime(2014, 1, 1, 10, 0, 0) }, End = new EventDateTime() { DateTime = new DateTime(2014, 1, 1, 12, 0, 0) } }, "YOUR_CALENDAR_ID_HERE"), (content, error, i, message) => { // Put your callback code here. }); // You can add more Queue calls here. // Execute the batch request, which includes the 2 requests above. await request.ExecuteAsync();