Table of contents

Traitement par lots | Concepts de l’API GraphBatch processing | Graph API concepts

Jimaco Brannian|Dernière mise à jour: 22/06/2018
|
2 Collaborateurs

S’applique à : API Graph | Azure Active Directory (AD)Applies to: Graph API | Azure Active Directory (AD)

L’API Azure AD Graph vous permet de traiter des opérations par lots sur des entités afin de réduire les boucles de serveur.With Azure AD Graph API, you can batch operations on entities to reduce roundtrips to the server.Le traitement par lots réduisant la charge pesant sur le réseau, vos opérations sont accomplies plus rapidement.Batching your requests reduces network overhead, and your operations will complete more quickly.

Important

Nous vous recommandons fortement d’utiliser Microsoft Graph plutôt que l’API Graph Azure AD pour accéder aux ressources Azure Active Directory.We strongly recommend that you use Microsoft Graph instead of Azure AD Graph API to access Azure Active Directory resources.Nos efforts de développement sont désormais axés sur Microsoft Graph et aucune autre amélioration n’est prévue pour l’API Graph Azure AD.Our development efforts are now concentrated on Microsoft Graph and no further enhancements are planned for Azure AD Graph API.Il existe un nombre très limité de scénarios pour lesquels l’API Graph Azure AD peut être encore appropriée ; pour plus d’informations, consultez le billet de blog Microsoft Graph ou l’API Azure AD dans le Centre de développement Office.There are a very limited number of scenarios for which Azure AD Graph API might still be appropriate; for more information, see the Microsoft Graph or the Azure AD Graph blog post in the Office Dev Center.Il est important de noter que le traitement par lots n’est actuellement pas pris en charge dans Microsoft Graph ; vous devrez utiliser l’API Azure AD Graph pour cette fonctionnalité.Note that batch processing is not currently supported in Microsoft Graph; you will need to use Azure AD Graph API for this feature.

Prise en charge de l’API Graph pour les demandes de traitement par lots OData Graph API support for OData batch requests

La sémantique relative aux opérations de traitement par lots d’entités figure dans Spécification du traitement par lots OData 3.0.The semantics for entity batch processing are defined by the OData 3.0 Batch Processing Specification.La spécification OData définit les concepts suivants pour les demandes de lot :The OData specification defines the following concepts for batch requests:

  • Une requête est un appel de fonction ou de requête unique.A query is a single query or function invocation.
  • Un ensemble de modifications est un groupe d’une ou plusieurs opérations d’insertion, de mise à jour ou de suppression, ou d’appels de service.A change set is a group of one or more insert, update, or delete operations, action invocations, or service invocations.
  • Un lot est un conteneur d’opérations, qui comprend un ou plusieurs ensembles de modifications et opérations de requête.A batch is a container of operations, including one or more change sets and query operations.

L’API Graph prend en charge un sous-ensemble des fonctionnalités définies par la spécification OData :The Graph API supports a subset of the functionality defined by the OData specification:

  • Un lot unique peut contenir jusqu’à cinq requêtes et/ou ensembles de modifications combinés.A single batch can contain a maximum of five queries and/or change sets combined.
  • Un ensemble de modifications peut contenir une modification d’objet source et jusqu’à 20 opérations d’ajout et de suppression de lien combinées.A change set can contain a maximum of one source object modification and up to 20 add-link and delete-link operations combined.Toutes les opérations de l’ensemble de modifications doivent porter sur une seule entité source.All operations in the change set must be on a single source entity.

Demandes de lot dans l’API Graph Graph API batch requests

Les sections suivantes décrivent comment construire une demande de lot et interpréter la réponse par lot, et fournissent des exemples.The following sections describe how to construct a batch request, how to interpret the batch response, and show samples of each.

Syntaxe de demande de lotsBatch request syntax

Pour effectuer une demande de lots, spécifiez l’option $batch dans l’URI de demande.To perform a batch request, specify the $batch option on the request URI.Par exemple :For example:

https://graph.windows.net/contoso.onmicrosoft.com/$batch?api-version=1.6

Une demande de lots est envoyée au serveur avec une seule directive POST.A batch request is sent to the server with a single POST directive.

La charge utile est un message MIME à parties multiples contenant le lot ainsi que les requêtes et ensembles de modifications qui le constituent.The payload is a multi-part MIME message containing the batch and its constituent queries and change sets.La charge utile comprend deux types de limites MIME :The payload includes two types of MIME boundaries:

  • Une limite de lots sépare chaque requête et/ou ensemble de modifications dans le lot.A batch boundary separates each query and/or change set in the batch.
  • Une limite d’ensemble de modifications sépare les opérations individuelles à l’intérieur d’un ensemble de modifications.A change set boundary separates individual operations within a change set.

Une demande individuelle au sein d’un ensemble de modifications est identique à une demande faite quand cette opération est appelée isolément.An individual request within a change set is identical to a request made when that operation is called by itself.Par exemple :For example:

  • Pour spécifier le format de charge utile (JSON ou ATOM) pour chaque opération de l’ensemble de modifications, incluez les en-têtes Content-Type et, si nécessaire, Accept appropriés.To specify the payload format (JSON or ATOM) for each operation in the change set, include the appropriate Content-Type and, if needed, Accept headers.
  • Pour supprimer l’écho de contenu de réponse lors de la création d’une entité, spécifiez l’en-tête Prefer avec la valeur return-no-content pour chaque opération d’insertion dans l’ensemble de modifications.To suppress the response content echo when creating an entity, specify the Prefer header with the return-no-content value for each insert operation in a change set.

Exemple de demandeSample request

L’exemple suivant présente une demande de lots contenant cinq éléments :The following example shows a batch request that contains five items:

  1. Un ensemble de modifications qui crée un utilisateur, testuser@contoso.onmicrosoft.com (POST).A change set that creates a user, testuser@contoso.onmicrosoft.com (POST).Cette opération inclut l’en-tête Prefer: response-no-content pour supprimer l’utilisateur nouvellement créé qui est renvoyé.This operation includes the Prefer: response-no-content header to suppress the newly created user being returned.
  2. Un ensemble de modifications qui met à jour les propriétés Department (service) et JobTitle (fonction) du nouvel utilisateur (PATCH), et définit sa propriété de navigation de gestionnaire (PUT).A change set that updates the Department and Job Title properties of the new user (PATCH), and sets its manager navigation property (PUT).
  3. Une requête pour le gestionnaire du nouvel utilisateur (GET).A query for the manager of the new user (GET).
  4. Un ensemble de modifications qui supprime le nouvel utilisateur (DELETE).A change set that deletes the new user (DELETE).
  5. Une requête pour l’utilisateur (GET).A query for the user (GET).Cette opération échoue parce que l’utilisateur a été supprimé à l’étape précédente.This operation will fail because the user was deleted in the previous step.
POST https://graph.windows.net/contoso.onmicrosoft.com/$batch?api-version=1.5 HTTP/1.1
Authorization: Bearer ey … jQA
Content-Type: multipart/mixed; boundary=batch_36522ad7-fc75-4b56-8c71-56071383e77b 
Host: graph.windows.net
Content-Length: 2961

--batch_36522ad7-fc75-4b56-8c71-56071383e77b 
Content-Type: multipart/mixed; boundary=changeset_77162fcd-b8da-41ac-a9f8-9357efbbd620 
Content-Length: 631       

--changeset_77162fcd-b8da-41ac-a9f8-9357efbbd620 
Content-Type: application/http 
Content-Transfer-Encoding: binary 

POST /contoso.onmicrosoft.com/users?api-version=1.5 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 256
Prefer: return-no-content
Host: graph.windows.net

{
    "accountEnabled": true,
    "displayName": "Test User",
    "mailNickname": "testuser",
    "passwordProfile": { "password" : "Test1234", "forceChangePasswordNextLogin": false },
    "userPrincipalName": "testuser@contoso.onmicrosoft.com"
}

--changeset_77162fcd-b8da-41ac-a9f8-9357efbbd620----batch_36522ad7-fc75-4b56-8c71-56071383e77b 
Content-Type: multipart/mixed; boundary=changeset_4b2cbfb7-011d-4edb-8bbf-e044f9830aaf 
Content-Length: 909

--changeset_4b2cbfb7-011d-4edb-8bbf-e044f9830aaf 
Content-Type: application/http 
Content-Transfer-Encoding: binary 

PATCH /contoso.onmicrosoft.com/users/testuser@contoso.onmicrosoft.com?api-version=1.5 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 72
Host: graph.windows.net

{
    "department": "Engineering",
    "jobTitle": "Test Engineer"
}

--changeset_4b2cbfb7-011d-4edb-8bbf-e044f9830aaf 
Content-Type: application/http 
Content-Transfer-Encoding: binary 

PUT /contoso.onmicrosoft.com/users/testuser@contoso.onmicrosoft.com/$links/manager?api-version=1.5 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 112
Host: graph.windows.net

{
  "url":"https://graph.windows.net/contoso.onmicrosoft.com/users/a71e4d1c-ce99-40dc-8d4b-390eac63e039"
}

--changeset_4b2cbfb7-011d-4edb-8bbf-e044f9830aaf----batch_36522ad7-fc75-4b56-8c71-56071383e77b 
Content-Type: application/http 
Content-Transfer-Encoding:binary

GET /contoso.onmicrosoft.com/users/testuser@contoso.onmicrosoft.com/$links/manager?api-version=1.5 HTTP/1.1
Accept: application/json
Host: graph.windows.net

--batch_36522ad7-fc75-4b56-8c71-56071383e77b 
Content-Type: multipart/mixed; boundary=changeset_9a0b5878-0f4a-4f57-91c5-9792cdd5ef20 
Content-Length: 331       

--changeset_9a0b5878-0f4a-4f57-91c5-9792cdd5ef20 
Content-Type: application/http 
Content-Transfer-Encoding: binary 

DELETE /contoso.onmicrosoft.com/users/testuser@contoso.onmicrosoft.com?api-version=1.5 HTTP/1.1
Accept: application/json
Host: graph.windows.net


--changeset_9a0b5878-0f4a-4f57-91c5-9792cdd5ef20----batch_36522ad7-fc75-4b56-8c71-56071383e77b 
Content-Type: application/http 
Content-Transfer-Encoding:binary

GET /contoso.onmicrosoft.com/users/testuser@contoso.onmicrosoft.com?api-version=1.5 HTTP/1.1
Accept: application/json
Host: graph.windows.net

--batch_36522ad7-fc75-4b56-8c71-56071383e77b--

Syntaxe de réponse de lot Batch response syntax

La réponse renvoie un code d’état général pour la demande de lots, ainsi que des codes d’état individuels et des fragments de résultat pour chaque élément du lot.The response returns an overall status code for the batch request, and individual status codes and result fragments for each item in the batch.La réponse est un message MIME à parties multiples, qui comprend des limites de lots et d’ensembles de modifications.The response is a multi-part MIME message that includes batch boundaries and change set boundaries.

En supposant que la demande de lots ait été correctement authentifiée et reçue par l’API Graph, elle renvoie un code d’état 202 Accepté, même si l’une des opérations du lot échoue.Assuming that the batch request has been properly authenticated and has been successfully received by the Graph API, the batch request returns status code 202 Accepted, even if one of the operations in the batch fails.Si la demande de lot proprement dite échoue, elle échoue avant l’exécution d’une quelconque opération du lot.If the batch request itself fails, it fails before any operation in the batch is executed.Par exemple, la demande de lot peut échouer en raison d’une erreur d’authentification, auquel cas le code d’état indiquera cette défaillance.For example, the batch request may fail due to an authentication error, in which case the status code will indicate that failure.

Le fragment de réponse pour un élément de requête contient un code d’état unique qui indique la réussite ou l’échec de l’opération, ainsi que tout corps de réponse approprié.The response fragment for a query item contains a single status code that indicates either the success or failure of the operation as well as any response body appropriate.

Les opérations d’un ensemble de modifications sont traitées de façon atomique. Autrement dit, toutes les opérations de l’ensemble de modifications soit réussissent, soit échouent.The operations in a change set are processed atomically; that is, either all operations in the change set succeed, or the entire change set fails.L’API graphique continue de traiter les opérations de l’ensemble de modifications jusqu’à ce que l’une d’elles échoue.The Graph API continues processing operations in the change set until one fails.En cas d’échec d’une opération, toutes les opérations précédentes de l’ensemble de modifications sont restaurées.If an operation fails, all preceding operations in the change set are rolled back.

Si toutes les opérations d’un ensemble de modifications sont correctement traitées, le code d’état (et le corps de réponse) pour chaque opération de l’ensemble de modifications apparaît dans la réponse de celui-ci.If all operations in a change set are successfully processed, the status code (and response body) for each operation within the change set appears within the change set response.En cas d’échec d’une opération d’un ensemble de modifications, un seul code d’état est renvoyé pour l’ensemble de modifications.If an operation in a change set fails, then only a single status code is returned for the change set.Il s’agit du code d’état (et du corps de réponse) renvoyé par l’opération qui a échoué, par exemple, 400 Demande incorrecte ou 404 Introuvable.This will be the status code (and response body) returned by the failed operation; for example, 400 Bad Request or 404 Not Found.

Exemple de réponseSample response

L’exemple suivant montre la réponse pour l’opération par lot envoyée dans l’exemple de demande présenté ci-dessus.The following example shows the response for the batch operation sent in the sample request shown above.L’état de la demande de lots proprement dite a la valeur 202 Accepté.The status for the batch request itself is set to 202 Accepted.Cela indique qu’il n’y a aucun problème avec la demande de lot elle-même.This indicates that there no problems with the batch request itself.La réponse à chaque élément du lot est délimitée par l’identificateur de limite batchresponse, et chaque réponse à une opération d’un ensemble de modifications est délimitée par un identificateur de limite changesetresponse.The response to each item in the batch is delimited with the batchresponse boundary identifier and each response to an operation within a change set is delimited with a changesetresponse boundary identifier.

La section suivante répertorie les fragments de réponse pour chaque élément de lot :The following lists the response fragments for each batch item:

  1. L’état de la demande POST pour créer le nouvel utilisateur est défini sur 204 Pas de contenu.The status for the POST request to create the new user is set to 204 No Content.Cela est dû au fait que l’en-tête Prefer a été défini sur return-no-content dans la demande.This is because the Prefer header was set to return-no-content in the request.Cela indique que l’utilisateur a été correctement créé.It indicates that the user was successfully created.
  2. La réponse au deuxième élément du lot contient deux réponses 204 Pas de contenu, l’une pour la mise à jour de l’objet utilisateur (PATCH), et l’autre pour la définition du lien de gestionnaire (PUT) dans l’ensemble de modifications.The response for the second batch item contains two 204 No Content responses, one for the user object update (PATCH) and one for setting the manager link (PUT) in the change set.Cela indique que les deux opérations ont réussi.This indicates that both operations were successful.
  3. La réponse à la demande de lecture du gestionnaire de l’utilisateur renvoie le lien du gestionnaire et un état 200 OK.The response for the request to read the user’s manager, returns the link to the manager and a status of 200 OK.
  4. L’état de la tentative de suppression de l’utilisateur est 204 Pas de contenu.The status for the attempt to delete the user, is 204 No Content.Cela indique que l’opération a réussi.This indicates that the operation was successful
  5. L’état de la tentative de lecture de l’utilisateur supprimé est 404 Introuvable, et la réponse contient un code et un message indiquant que l’utilisateur (ressource) est introuvable.The status for the attempt to read the deleted user, is 404 Not Found and the response contains a code and message that indicates that the user (resource) was not found.
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Pragma: no-cache
Content-Type: multipart/mixed; boundary=batchresponse_1eb70252-25d2-466c-9a1d-7a3f45378b06
Expires: -1
Server: Microsoft-IIS/8.5
ocp-aad-diagnostics-server-name: Nv0YIi2YUldDWu0YPQAXsYwXQ4ttyr7ded6Waf8xyCc=
request-id: 2f7d2f81-3441-4c2a-b494-25cd1d6ce624
client-request-id: f40c00af-3e1f-4198-9261-386f0e3aecc6
x-ms-gateway-rewrite: false
x-ms-dirapi-data-contract-version: 1.5
ocp-aad-session-key: cdhenl3mgHuI3vaRRIQ14uXdwRLUqirNpDXjJP42EzUEvqhhn2NFr22ulR4PsqrM1UD_eSUDItt7J9kUQhNvTT_48q90coHHt2RutCIgPNg.lD81Z0iS2SaHbqkfAaDvbbigoX7ak7rfiUGFby0LOIE
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By: ASP.NET
Date: Tue, 20 Jan 2015 23:21:15 GMT
Content-Length: 3065

--batchresponse_1eb70252-25d2-466c-9a1d-7a3f45378b06
Content-Type: multipart/mixed; boundary=changesetresponse_8a63ce5e-ed31-4de6-bc90-9d3ff31debbb--changesetresponse_8a63ce5e-ed31-4de6-bc90-9d3ff31debbb
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
Cache-Control: no-cache
Preference-Applied: return-no-content
DataServiceVersion: 3.0;
Location: https://graph.windows.net/contoso.onmicrosoft.com/directoryObjects/6a287a96-ede9-44d2-b685-d6fc03a124c5/Microsoft.DirectoryServices.User
DataServiceId: https://graph.windows.net/contoso.onmicrosoft.com/directoryObjects/6a287a96-ede9-44d2-b685-d6fc03a124c5


--changesetresponse_8a63ce5e-ed31-4de6-bc90-9d3ff31debbb----batchresponse_1eb70252-25d2-466c-9a1d-7a3f45378b06
Content-Type: multipart/mixed; boundary=changesetresponse_11ba5cf0-9fba-4995-9f15-bd5c9981cdd6--changesetresponse_11ba5cf0-9fba-4995-9f15-bd5c9981cdd6
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
Cache-Control: no-cache
DataServiceVersion: 1.0;


--changesetresponse_11ba5cf0-9fba-4995-9f15-bd5c9981cdd6
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
Cache-Control: no-cache
DataServiceVersion: 1.0;


--changesetresponse_11ba5cf0-9fba-4995-9f15-bd5c9981cdd6----batchresponse_1eb70252-25d2-466c-9a1d-7a3f45378b06
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 200 OK
DataServiceVersion: 3.0;
Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8
X-Content-Type-Options: nosniff
Cache-Control: no-cache

{
  "odata.metadata":"https://graph.windows.net/contoso.onmicrosoft.com/$metadata#directoryObjects/$links/manager",
  "url":"https://graph.windows.net/contoso.onmicrosoft.com/directoryObjects/a71e4d1c-ce99-40dc-8d4b-390eac63e039/Microsoft.DirectoryServices.User"
}
--batchresponse_1eb70252-25d2-466c-9a1d-7a3f45378b06
Content-Type: multipart/mixed; boundary=changesetresponse_bb215a84-f91e-4486-a771-ba2cc5d429d1--changesetresponse_bb215a84-f91e-4486-a771-ba2cc5d429d1
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
X-Content-Type-Options: nosniff
Cache-Control: no-cache
DataServiceVersion: 1.0;


--changesetresponse_bb215a84-f91e-4486-a771-ba2cc5d429d1----batchresponse_1eb70252-25d2-466c-9a1d-7a3f45378b06
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 404 Not Found
X-Content-Type-Options: nosniff
Cache-Control: no-cache
DataServiceVersion: 3.0;
Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8

{
  "odata.error":
    {
      "code":"Request_ResourceNotFound",
      "message":
        {
          "lang":"en",
          "value":"Resource 'testuser@contoso.onmicrosoft.com' does not exist or one of its queried reference-property objects are not present."
        }
    }
}
--batchresponse_1eb70252-25d2-466c-9a1d-7a3f45378b06--

Exemple de réponse d’erreurSample error response

Comme expliqué ci-dessus, l’API Graph renvoie un code d’erreur 202 Accepté pour l’ensemble du lot si elle peut accepter le lot, c’est-à-dire, si la demande de lot est correctement formée et s’il n’y a pas d’erreur, par exemple, d’authentification.As discussed above, the Graph API returns an error code of 202 Accepted for the entire batch if it can accept the batch; that is, if the batch request is well-formed and there are no errors, such as an authentication error.Sinon, l’API Graph renvoie l’erreur appropriée et ne traite pas le lot.Otherwise, the Graph API returns the appropriate error and does not process the batch.En cas d’échec d’un élément du lot, le fragment de réponse pour cet élément contient un code d’état et un corps de réponse indiquant cette erreur.If an individual item within the batch fails then the response fragment for that item will contain a status code and response body that indicates that error.En cas d’échec d’une opération d’un ensemble de modifications, un fragment de réponse est renvoyé pour l’ensemble de modifications entier, et ce fragment contient le code d’état et le corps de réponse associés à l’opération qui a échoué.When an operation inside a change set fails, a single response fragment will be returned for the entire change set and that fragment will contain the status code and response body associated with the failed operation.

L’exemple suivant présente une réponse de demande de lot contenant un ensemble de modifications dans lequel l’une des opérations a échoué.The following example shows a response from batch request that contains a change set in which one of the operations failed.Notez que la réponse par lot renvoie le code d’état 202 Accepté.Note that the batch response returns status code 202 Accepted.Le code d’état renvoyé pour l’ensemble de modifications indique qu’une opération a échoué avec l’état 404 Introuvable.The status code returned for the change set indicates that an operation failed with a status of 404 Not Found.Des informations d’erreur supplémentaires sont incluses dans le corps de la réponse pour l’opération qui a échoué.Additional error information is included in the response body for the failed operation.L’élément code spécifie le code d’erreur de l’API Graph et l’élément message contient la chaîne du message d’erreur.The code element specifies the Graph API error code and the message element contains the error message string.Dans cet exemple, le corps de la réponse a été mis en retrait pour une meilleure lisibilité.In this example, the response body has been indented for readability.

HTTP/1.1 202 Accepted
Cache-Control: no-cache
Pragma: no-cache
Content-Type: multipart/mixed; boundary=batchresponse_3ac28387-a100-4758-8998-8b9ec36f9fdc
Expires: -1
Server: Microsoft-IIS/8.5
ocp-aad-diagnostics-server-name: 1l3fvSoDCV+VKoBCuHRN+HIwCACBOck3dqmtCGj+aiU=
request-id: e434261b-c32f-48b4-b21d-3e1beab6d525
client-request-id: 236bf26e-b4e8-40a4-b6fb-d41105a7b178
x-ms-gateway-rewrite: false
x-ms-dirapi-data-contract-version: 1.5
ocp-aad-session-key: 9aOaAUxX95OZ0ctrYbeLUproN-37GypZXrss0PYKhEfqamKRG-C68hFcCw5h-ZCWFqBrXPrldGEnjq4CKKr0bW91tjrdo-BlwAqHxbP5jq4.FaXtVZni3cSsWFRMSjQAbjiluPcEvZofwp9OH3t1fyk
X-Content-Type-Options: nosniff
DataServiceVersion: 1.0;
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By: ASP.NET
Date: Wed, 21 Jan 2015 21:13:25 GMT
Content-Length: 779

--batchresponse_3ac28387-a100-4758-8998-8b9ec36f9fdc
Content-Type: multipart/mixed; boundary=changesetresponse_72ba9a5a-2da3-4d39-ae4f-dd9527efd742--changesetresponse_72ba9a5a-2da3-4d39-ae4f-dd9527efd742
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 404 Not Found
X-Content-Type-Options: nosniff
DataServiceVersion: 3.0;
Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8

{
  "odata.error":
    {
      "code":"Request_ResourceNotFound",
      "message":
        {
          "lang":"en",
          "value":"Resource 'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee' does not exist or one of its queried reference-property objects are not present."
        }
    }
}
--changesetresponse_72ba9a5a-2da3-4d39-ae4f-dd9527efd742----batchresponse_3ac28387-a100-4758-8998-8b9ec36f9fdc--

Pour référence, l’exemple suivant présente le lot qui a généré la réponse ci-dessus.For reference, the following example shows the batch that generated the response above.Il contient un ensemble de modifications qui ajoute trois utilisateurs à un groupe.It contains a single change set that adds three users to a group.Les ID d’objet pour les deux derniers utilisateurs sont fictifs : eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee et ffffffff-ffff-ffff-ffff-ffffffffffff.The Object IDs for the last two users are fictitious: eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee and ffffffff-ffff-ffff-ffff-ffffffffffff.L’URL du lot et les en-têtes de demande associés sont omis par souci de concision.The batch URL and associated request headers are omitted for brevity.

--batch_36522ad7-fc75-4b56-8c71-56071383e77b 
Content-Type: multipart/mixed; boundary=changeset_5a769eb2-d1a7-4a10-94f6-d1a5ed5c4bc0 
Content-Length: 1432

--changeset_5a769eb2-d1a7-4a10-94f6-d1a5ed5c4bc0 
Content-Type: application/http 
Content-Transfer-Encoding: binary 

POST /contoso.onmicrosoft.com/groups/fc15e7ef-993f-4865-bf37-317d9b8017b8/$links/members?api-version=1.5 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 112
Host: graph.windows.net

{
  "url":"https://graph.windows.net/contoso.onmicrosoft.com/users/a71e4d1c-ce99-40dc-8d4b-390eac63e039"
}

--changeset_5a769eb2-d1a7-4a10-94f6-d1a5ed5c4bc0 
Content-Type: application/http 
Content-Transfer-Encoding: binary 

POST /contoso.onmicrosoft.com/groups/fc15e7ef-993f-4865-bf37-317d9b8017b8/$links/members?api-version=1.5 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 112
Host: graph.windows.net

{
  "url":"https://graph.windows.net/contoso.onmicrosoft.com/users/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee
"
}

--changeset_5a769eb2-d1a7-4a10-94f6-d1a5ed5c4bc0 
Content-Type: application/http 
Content-Transfer-Encoding: binary 

POST /contoso.onmicrosoft.com/groups/fc15e7ef-993f-4865-bf37-317d9b8017b8/$links/members?api-version=1.5 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 112
Host: graph.windows.net

{
  "url":"https://graph.windows.net/contoso.onmicrosoft.com/users/ffffffff-ffff-ffff-ffff-ffffffffffff"
}

--changeset_5a769eb2-d1a7-4a10-94f6-d1a5ed5c4bc0----batch_36522ad7-fc75-4b56-8c71-56071383e77b--

Ressources supplémentaires Additional resources

© 2018 Microsoft