Exécuter des opérations par lots à l'aide de l'API Web
Date de publication : janvier 2017
S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Vous pouvez regrouper plusieurs opérations en une seule demande HTTP à l'aide d'une opération par lots.
Contenu de la rubrique
Quand utiliser les demandes par lots ?
Demandes traitées par lots
Ensembles de modifications
Exemple
Quand utiliser les demandes par lots ?
Les demandes par lots peuvent inclure des ensembles de modifications, qui sont un moyen de regrouper un certain nombre d'opérations qui réussissent ou échouent en tant que groupe. dans une transaction Par rapport à d'autres opérations qui peuvent être effectuées à l'aide de l'API Web, elles sont plus difficiles à composer sans certains modèles d'objet qui incluent la sérialisation des objets ou une meilleure compréhension du protocole HTTP car le corps de requête est essentiellement un document texte qui doit répondre à des exigences très spécifiques.
N'oubliez pas que les entités associées peuvent être créées dans une opération unique plus facilement que l'utilisation d'une demande par lots. Les demandes par lots sont mieux utilisées en effectuant des opérations sur les entités qui ne sont pas associées entre elles lorsque les opérations doivent être effectuées dans une opération transactionnelle unique.
En outre, les réponses renvoyées sont essentiellement des documents texte et non des objets pouvant être facilement analysés au format JSON. Vous devez analyser le texte dans la réponse ou rechercher une bibliothèque d'assistance pour accéder aux données de la réponse.
Demandes traitées par lots
Utilisez une demande POST pour envoyer une opération par lots contenant plusieurs requêtes. Une demande par lots peut inclure des demandes et des ensembles de modifications GET. Pour utiliser les fonctionnalités transactionnelles des demandes par lots, seules les opérations qui modifient les données peuvent être incluses dans un ensemble de modifications. Les requêtes GET ne doivent pas être incluses dans l'ensemble de modifications.
La demande POST contenant le lot doit avoir un en-tête Content-Type avec une valeur définie sur multipart/mixed avec une limite définie pour contenir l'identificateur du lot à l'aide de ce modèle :
--batch_<unique identifier>
L'identificateur unique n'a pas nécessairement besoin d'être un GUID, mais doit être unique. Chaque élément du lot doit être précédé de l'identificateur du lot avec un en-tête Content-Type et Content-Transfer-Encoding comme suit :
--batch_WKQS9Yui9r
Content-Type: application/http
Content-Transfer-Encoding:binary
L'arrêt du lot doit contenir un indicateur de fin comme suit :
--batch_WKQS9Yui9r--
Notes
Les préférences odata.continue-on-error ne sont pas prises en charge par l'API Web. Toute erreur qui se produit dans le lot arrête le traitement du reste du lot.
Ensembles de modifications
Lorsque plusieurs opérations sont contenues dans un ensemble de modifications, toutes les opérations sont considérées atomiques, ce qui signifie que si l'une des opérations échoue, toutes les opérations terminées seront annulées. Comme pour une demande par lots, les ensembles de modifications doivent avoir un en-tête Content-Type avec une valeur définie sur multipart/mixed avec une limite définie pour contenir l'identificateur du lot à l'aide de ce modèle :
--changeset_<unique identifier>
L'identificateur unique n'a pas nécessairement besoin d'être un GUID, mais doit être unique. Chaque élément de l'ensemble de modifications doit être précédé de l'identificateur de l'ensemble de modifications avec un en-tête Content-Type et Content-Transfer-Encoding comme suit :
--changeset_BBB456
Content-Type: application/http
Content-Transfer-Encoding:binary
Des ensembles de modifications peuvent également inclure un en-tête Content-ID avec une valeur unique. Cette valeur, une fois mise en préfixe avec $, représente une variable contenant l'URI pour toute entité créée au cours de cette opération. Par exemple, lorsque vous définissez la valeur 1, vous pouvez faire référence à cette entité avec $1 ultérieurement dans votre ensemble de modifications.
L'arrêt de l'ensemble de modifications doit contenir un indicateur de fin comme suit :
--changeset_BBB456--
Exemple
L'exemple ci-dessous inclut un lot avec un identificateur unique de AAA123 et un ensemble de modifications défini avec un identificateur unique de BBB456.
Dans l'ensemble de modifications, deux tâches sont créées à l'aide de POST et associées à un compte existant avec accountid = 00000000-0000-0000-000000000001.
Enfin, une demande GET est incluse en dehors de l'ensemble de modifications pour retourner les six tâches liées au compte, notamment les deux créées dans la demande par lots.
Demande
POST cc_WebAPI_ServiceURI/$batch HTTP/1.1 Content-Type: multipart/mixed;boundary=batch_AAA123 Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0 --batch_AAA123 Content-Type: multipart/mixed;boundary=changeset_BBB456 --changeset_BBB456 Content-Type: application/http Content-Transfer-Encoding:binary Content-ID: 1 POST cc_WebAPI_ServiceURI/tasks HTTP/1.1 Content-Type: application/json;type=entry {"subject":"Task 1 in batch","regardingobjectid_account_task@odata.bind":"cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000001)"} --changeset_BBB456 Content-Type: application/http Content-Transfer-Encoding:binary Content-ID: 2 POST cc_WebAPI_ServiceURI/tasks HTTP/1.1 Content-Type: application/json;type=entry {"subject":"Task 2 in batch","regardingobjectid_account_task@odata.bind":"cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000001)"} --changeset_BBB456-- --batch_AAA123 Content-Type: application/http Content-Transfer-Encoding:binary GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000001)/Account_Tasks?$select=subject HTTP/1.1 Accept: application/json --batch_AAA123--
Réponse
--batchresponse_c1bd45c1-dd81-470d-b897-e965846aad2f Content-Type: multipart/mixed; boundary=changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc --changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc Content-Type: application/http Content-Transfer-Encoding: binary Content-ID: 1 HTTP/1.1 204 No Content OData-Version: 4.0 Location: cc_WebAPI_ServiceURI/tasks(a59c24f3-fafc-e411-80dd-00155d2a68cb) OData-EntityId: cc_WebAPI_ServiceURI/tasks(a59c24f3-fafc-e411-80dd-00155d2a68cb) --changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc Content-Type: application/http Content-Transfer-Encoding: binary Content-ID: 2 HTTP/1.1 204 No Content OData-Version: 4.0 Location: cc_WebAPI_ServiceURI/tasks(a69c24f3-fafc-e411-80dd-00155d2a68cb) OData-EntityId: cc_WebAPI_ServiceURI/tasks(a69c24f3-fafc-e411-80dd-00155d2a68cb) --changesetresponse_ff83b4f1-ab48-430c-b81c-926a2c596abc-- --batchresponse_c1bd45c1-dd81-470d-b897-e965846aad2f Content-Type: application/http Content-Transfer-Encoding: binary HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context":"cc_WebAPI_ServiceURI/$metadata#tasks(subject)","value":[ { "@odata.etag":"W/\"474122\"","subject":"Task Created with Test Account","activityid":"919c24f3-fafc-e411-80dd-00155d2a68cb" },{ "@odata.etag":"W/\"474125\"","subject":"Task 1","activityid":"a29c24f3-fafc-e411-80dd-00155d2a68cb" },{ "@odata.etag":"W/\"474128\"","subject":"Task 2","activityid":"a39c24f3-fafc-e411-80dd-00155d2a68cb" },{ "@odata.etag":"W/\"474131\"","subject":"Task 3","activityid":"a49c24f3-fafc-e411-80dd-00155d2a68cb" },{ "@odata.etag":"W/\"474134\"","subject":"Task 1 in batch","activityid":"a59c24f3-fafc-e411-80dd-00155d2a68cb" },{ "@odata.etag":"W/\"474137\"","subject":"Task 2 in batch","activityid":"a69c24f3-fafc-e411-80dd-00155d2a68cb" } ] } --batchresponse_c1bd45c1-dd81-470d-b897-e965846aad2f--
Voir aussi
Effectuer des opérations à l'aide de l'API Web
Composer des demandes HTTP et gérer les erreurs
Interroger les données à l'aide de l'API Web
Créer une entité à l'aide de l'API Web
Récupérer une entité à l'aide de l'API Web
Mettre à jour et supprimer des entités à l'aide de l'API Web
Associer et dissocier les entités à l'aide de l'API Web
Utiliser des fonctions API Web
Utiliser des actions API Web
Emprunter l'identité d'un autre utilisateur à l'aide de l'API Web
Effectuer les opérations conditionnelles à l'aide de l'API Web
Microsoft Dynamics 365
© 2017 Microsoft. Tous droits réservés. Copyright