Composer des demandes HTTP et gérer les erreurs

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Vous interagissez avec l'API Web en composant et en envoyant des requêtes HTTP. Vous devez savoir comment définir les en-têtes HTTP appropriés et gérer toutes les erreurs incluses dans la réponse.

Contenu de la rubrique

URL et versions d'API Web

Méthodes HTTP

En-têtes HTTP

Identifier les codes de statut

Analyse des erreurs relatives à la réponse

URL et versions d'API Web

Pour accéder à l'API Web, vous devez composer une URL à l'aide des composants du tableau suivant.

Élément

Description

Protocole

Le protocole correspondant, https:// ou http://.

L'URL de base

Il s'agit de l'URL que vous utilisez normalement pour ouvrir l'application Web.

  • Pour Microsoft Dynamics 365 (Online) : utilisez <tenant name>.crm.dynamics.com.

  • Pour Déploiement avec accès via Internet (IFD) : utilisez l'URL correspondant à votre instance. Il s'agira de : <organization name>.<domain name>.

  • Pour Dynamics 365 (local) : utilisez <server name>/<organization name>

Chemin d'accès de l'API Web

Le chemin d'accès à l'API Web est /api/data/.

Version

La version est exprimée comme suit : v[Major_version].[Minor_version][PatchVersion]/. Les versions valides de cette version sont :

  • v8.0/ Pour Mise à jour 0.1 de Microsoft Dynamics CRM Online 2016 et Mise à jour 0.1 de Microsoft Dynamics CRM 2016

  • v8.1/ Pour Mise à jour 1 de Microsoft Dynamics CRM Online 2016 et Microsoft Dynamics CRM 2016 Service Pack 1

  • v8.2/ pour Mise à jour de décembre 2016 pour Dynamics 365 (en ligne et local)

La valeur spécifique que vous utilisez n'est pas importante avec cette version tant vous avez appliqué les mises à jour ou les Service Packs correspondants. Pour plus d'informations, voir Compatibilité de version

Ressource

Le nom de l'entité, de la fonction ou de l'action que vous souhaitez utiliser.

L'URL que vous utiliserez sera composée des parties suivantes : Protocole + URL de base + chemin d'accès de l'API Web + Version + Ressource.

Compatibilité de version

Dans cette version, nous avons appliqué un certain nombre de changements additionnels à chaque mise à jour ou service pack. Lorsque ces mises à jour sont appliquées, elles ajoutent les mêmes capacités aux versions mineures suivantes. Ainsi, si vous pouvez utiliser la version 8.2, les versions 8.1 et 8.0 auront les mêmes capacités. Cela est rendu possible car les changements ont été additionnels ou étaient résolutions de bogues traitant les éléments répertoriés dans Limitations relatives aux API Web Microsoft Dynamics 365. Aucun changement majeur n'a été introduit.

Notes

La prochaine version majeure (v9) introduit des capacités qui seront uniquement disponibles avec cette version. Les versions mineures suivantes peuvent fournir des fonctionnalités supplémentaires qui ne seront pas reportées aux versions mineures précédentes. Votre code écrit pour v8.x continuera à fonctionner dans v9.x si vous référencez v8.2 dans l'URL que vous utilisez.

Pour la version v8.x, utilisez la dernière version que vous pouvez et sachez quelles mises à jour ou quels Service Packs de cette version principale n'introduiront pas de modifications importantes. Toutefois, cela sera différent dans les prochaines versions où vous devrez être particulièrement attentifs à la version du service que vous adressez.

Méthodes HTTP

Les demandes HTTP peuvent appliquer une variété de méthodes différentes. Lorsque vous utilisez l'API Web, vous n'utilisez que les méthodes répertoriées dans le tableau suivant.

Méthode

Utilisation

GET

À utiliser lors de la récupération des données, notamment les fonctions d'appel. Le code de statut destiné à une récupération réussie est 200 OK.

POST

À utiliser lors de la création d'entités ou d'actions d'appel.

PATCH

À utiliser lors de la mise à jour d'entités ou l'exécution d'opérations de type upsert.

DELETE

À utiliser lors de la suppression des entités ou des propriétés individuelles des entités.

PUT

À utiliser dans des situations limitées pour mettre à jour différentes propriétés d'entités. Cette méthode n'est par recommandée en mettant à jour la plupart des entités. À utiliser lors de la mise à jour des entités de modèles.

En-têtes HTTP

Bien que le protocole OData autorise les deux formats, JSON et ATOM, l'API Web prend en charge uniquement le format JSON. Par conséquent, les en-têtes suivants peuvent être appliqués.

Chaque demande doit inclure la valeur d'en-tête Accept de application/json, même lorsqu'aucun corps de réponse n'est prévu. Toute erreur retournée dans la réponse doit être retournée au format JSON. Lorsque votre code doit fonctionner même si cet en-tête n'est pas inclus, nous vous conseillons de l'ajouter comme recommandation

La version OData actuelle est 4.0, mais les futures versions peuvent autoriser de nouvelles fonctionnalités. Pour garantir qu'il n'y a aucune ambiguïté sur la version OData qui sera appliquée à votre code à ce point par la suite, vous devez toujours inclure un énoncé significatif de la version OData actuelle et la version maximale à appliquer dans votre code. Utilisez les deux en-têtes OData-Version et OData-MaxVersion définis sur la valeur 4.0.

Tous les en-têtes HTTP doivent inclure au moins les en-têtes suivants.

Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0

Chaque demande contenant des données JSON dans le corps de la demande doit inclure un en-tête Content-Type contenant une valeur application/json.

Content-Type: application/json

Vous pouvez utiliser des en-têtes supplémentaires pour activer des fonctionnalités spécifiques.

  • Pour retourner des données lors des opérations de création (POST) ou de mise à jour (PATCH) pour les entités, incluez la préférence return=representation. Lorsque cette préférence est appliquée à une requête POST, une réponse réussie a le statut 201 (Created). Pour une requête PATCH, une réponse réussie a le statut 200 (OK). Si cette préférence n'est pas appliquée, les deux opérations retournent le statut 204 (No Content) pour indiquer qu'aucune donnée n'est retournée dans le corps de la réponse par défaut.

    Notes

    Cette fonctionnalité a été ajoutée avec la Mise à jour de décembre 2016 pour Dynamics 365 (en ligne et local).

  • Pour retourner des valeurs mises en forme avec une requête, ajoutez la préférence odata.include-annotations définie sur Microsoft.Dynamics.CRM.formattedvalue à l'aide de l'en-tête de préférence.Pour plus d'informations :Inclure des valeurs mises en forme

  • Vous utilisez également l'en-tête Prefer avec l'option odata.maxpagesize pour spécifier le nombre de pages que vous souhaitez consulter.Pour plus d'informations :Spécifiez le nombre d'entités à renvoyer dans une page

  • Pour emprunter l'identité d'un autre utilisateur lorsque l'appelant dispose de privilèges pour le faire, ajoutez l'en-tête MSCRMCallerID avec la valeur systemuserid de l'utilisateur concerné par l'emprunt d'identité.Pour plus d'informations :Emprunter l'identité d'un autre utilisateur à l'aide de l'API Web.

  • Pour appliquer l'accès concurrentiel optimiste, vous pouvez appliquer l'en-tête If-Match avec une valeur Etag.Pour plus d'informations :Appliquer l'accès concurrentiel optimiste.

  • Pour activer la détection de doublons pour une demande POST, vous pouvez utiliser l'en-tête MSCRM.SuppressDuplicateDetection: false.Pour plus d'informations :244259ca-2fbc-4fd4-9a74-6166e6683355#bkmk_SuppressDuplicateDetection

  • Pour contrôler si une opération upsert doit créer ou mettre une entité à jour, vous pouvez aussi utiliser les en-têtes If-Match et If-None-Match.Pour plus d'informations :Utilisation de Upsert avec une entité.

  • Lorsque vous exécutez des opérations par lots, vous devez appliquer un certain nombre d'en-têtes différents dans la demande et avec chaque partie envoyée dans le corps.Pour plus d'informations :Exécuter des opérations par lots à l'aide de l'API Web.

Identifier les codes de statut

Si une demande http aboutit ou échoue, la réponse contiendra un code de statut. Les codes de statut sont renvoyés par l'API Web Microsoft Dynamics 365 avec ce qui suit :

Code

Description

Type

200 OK

Est généré lorsque votre opération renvoie des données dans le corps de réponse.

Succès

201 Created

Est généré lorsque votre opération POST réussit et que vous avez spécifié la préférence return-representation dans votre demande.

Notes

Cette fonctionnalité a été ajoutée avec la Mise à jour de décembre 2016 pour Dynamics 365 (en ligne et local).

Succès

204 No Content

Est généré lorsque votre opération aboutit mais ne renvoie pas de données dans le corps de réponse.

Succès

304 Not Modified

Est généré lors du test pour voir si une entité a été modifiée depuis sa dernière récupération.Pour plus d'informations :Récupérations conditionnelles

Redirection

403 Forbidden

Est généré pour les types d'erreurs suivants :

  • AccessDenied

  • AttributePermissionReadIsMissing

  • AttributePermissionUpdateIsMissingDuringUpdate

  • AttributePrivilegeCreateIsMissing

  • CannotActOnBehalfOfAnotherUser

  • CannotAddOrActonBehalfAnotherUserPrivilege

  • CrmSecurityError

  • InvalidAccessRights

  • PrincipalPrivilegeDenied

  • PrivilegeCreateIsDisabledForOrganization

  • PrivilegeDenied

  • unManagedinvalidprincipal

  • unManagedinvalidprivilegeedepth

Erreur client

401 Unauthorized

Est généré pour les types d'erreurs suivants :

  • BadAuthTicket

  • ExpiredAuthTicket

  • InsufficientAuthTicket

  • InvalidAuthTicket

  • InvalidUserAuth

  • MissingCrmAuthenticationToken

  • MissingCrmAuthenticationTokenOrganizationName

  • RequestIsNotAuthenticated

  • TamperedAuthTicket

  • UnauthorizedAccess

  • UnManagedInvalidSecurityPrincipal

Erreur client

413 Payload Too Large

Générée lorsque la longueur de la demande est trop grande.

Erreur client

400 BadRequest

Générée lorsqu'un argument n'est pas valide.

Erreur client

404 Not Found

Générée lorsque la ressource n'existe pas.

Erreur client

405 Method Not Allowed

Cette erreur se produit pour les combinaisons de méthodes et de ressources incorrectes. Par exemple, vous ne pouvez pas utiliser DELETE ou PATCH sur une collection d'entités.

Est généré pour les types d'erreurs suivants :

  • CannotDeleteDueToAssociation

  • InvalidOperation

  • NotSupported

Erreur client

412 Precondition Failed

Est généré pour les types d'erreurs suivants :

  • ConcurrencyVersionMismatch

  • DuplicateRecord

Erreur client

500 Internal Server Error

Erreur attendue si une demande POST de création d'une entité active la détection des doublons et que l'entité à créer est un doublon.Pour plus d'informations :244259ca-2fbc-4fd4-9a74-6166e6683355#bkmk_SuppressDuplicateDetection

Erreur du serveur

501 Not Implemented

Générée lorsqu'une opération demandée n'est pas implémentée.

Erreur serveur

503 Service Unavailable

Générée lorsque le service API Web n'est pas disponible.

Erreur serveur

Analyse des erreurs relatives à la réponse

Les détails sur les erreurs sont affichés au format JSON dans la réponse. Les erreurs apparaissent dans ce format.

    { "error":{ "code": "
            <This code is not related to the http status code and is frequently empty>", "message": "
            <A message describing the error>", "innererror": { "message": "
            <A message describing the error, this is frequently the same as the outer message>", "type": "Microsoft.Crm.CrmHttpException", "stacktrace": "
            <Details from the server about where the error occurred>" } } }

Voir aussi

Effectuer des opérations à l'aide de l'API Web
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
Exécuter des opérations par lots à l'aide de l'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