Partager via


Exécuter des opérations de données de base utilisant le point de terminaison OData

 

Date de publication : novembre 2016

S’applique à : Dynamics CRM 2015

Il existe diverses bibliothèques ou technologies que vous pouvez utiliser pour exécuter des requêtes HTTP destinées à effectuer des opérations de données à l’aide d’un point de terminaison OData avec Mise à jour de Microsoft Dynamics CRM 2015 et de Microsoft Dynamics CRM Online 2015. Cette rubrique décrit le format des requêtes HTTP de faible niveau. Quelle que soit la bibliothèque ou la technologie que vous utilisez, avec un outil de proxy de débogage Web comme Fiddler, vous pouvez examiner le trafic HTTP et comparer les résultats qui s’affichent avec les conditions du point de terminaison OData. Cette rubrique présente des exemples de requêtes HTTP et les réponses recueillies avec Fiddler. Certains contenus de ces exemples ont été modifiés par souci de concision et des <placeholders> figurent là où le contenu varie en fonction des variables de l’environnement.

Pour plus d’informations sur les applications qui utilisent une technologie spécifique, voir : Utiliser le point de terminaison OData avec les ressources Web Ajax et JScript

Contenu de la rubrique

Création d’enregistrements

  • Utilisation d’ATOM

  • Utilisation de JSON

Récupération d’enregistrements

  • Utilisation d’ATOM

  • Utilisation de JSON

Mise à jour d’enregistrements

  • Mise à jour à l’aide de PUT

  • Mise à jour à l’aide de MERGE

    • Utilisation d’ATOM

    • Utilisation de JSON

Suppression d'enregistrements

  • Utilisation d’ATOM

  • Utilisation de JSON

Codes de statut HTTP

Création d’enregistrements

Des enregistrements ou des entréessont créés en exécutant une demande sur L’URI de la collection où l’entrée doit être créée. La demande POST inclut la nouvelle entrée dans son corps en utilisant les formats ATOME ou JSON.

Le serveur affecte des valeurs par défaut à toutes les propriétés non spécifiées dans la demande et renvoie le résultat avec un en-tête Emplacement qui contient l’URL de l’enregistrement qui a été créé. L’élément titre de l’entrée reflète l’attribut principal de l’entité. Par exemple, pour l’entité account, l’attribut name est l’attribut principal. Le code de statut HTTP 201 indique que l’enregistrement a été créé correctement.

Pour plus d’informations sur une autre manière de créer des enregistrements dans le contexte d’un enregistrement associé, voir Utilisation de l’insertion profonde.

Utilisation d’ATOM

Par exemple, lorsqu’un enregistrement account est créé à l’aide de la bibliothèque System.Data.Services.Client dans le code géré

Demande HTTP

POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet HTTP/1.1
Accept-Charset: UTF-8
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
Accept:  application/atom+xml,application/xml
Content-Type:  application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 26629
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
xmlns="http://www.w3.org/2005/Atom">
  <category 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
  />
  <title type="text">New Account Created</title>
  <author>
    <name />
  </author>
  <updated>2010-07-22T22:51:50.0051481Z</updated>
  <id />
  <content type="application/xml">
    <m:properties>
[ Properties removed for brevity]
    </m:properties>
   </content>
</entry>

Réponse HTTP

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 26756
Content-Type:  application/atom+xml;charset=utf-8
Location:  <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:49 GMT

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="<organization root>/XRMServices/2011/OrganizationData.svc/" 
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
xmlns="http://www.w3.org/2005/Atom">
  <id><organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
  <title type="text">New Account Created</title>
  <updated>2010-07-22T22:51:50Z</updated>
  <author>
    <name />
  </author>
  <link rel="edit" title="Account" href="AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')" />
[Links removed for brevity]
  <category 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
  />
  <content type="application/xml">
    <m:properties>
[Properties removed for brevity]
</m:properties>
  </content>
</entry>

Contenu de la rubrique

Utilisation de JSON

Par exemple, lorsqu’un enregistrement de compte est créé à l’aide de l’objet XMLHttpRequest dans le navigateur.

Demande HTTP

POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet HTTP/1.1
Content-Type:  application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept:  application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 25
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

{"Name":"Sample Account"}

Réponse HTTP

HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 17720
Content-Type:  application/json;charset=utf-8
Location: <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c')
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:40 GMT

{
"d" : {
"__metadata": {
"uri": "<organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c')", 
"type": "Microsoft.Crm.Sdk.Data.Services.Account"
},
[Properties removed for brevity]
 }
}

Contenu de la rubrique

Récupération d’enregistrements

HTTP GET est utilisé lorsque vous récupérez des enregistrements. Lorsqu’un identificateur unique d’un enregistrement spécifique est fourni, seul cet enregistrement est récupéré. Sinon, toutes les options de requête système définies sont appliquées et jusqu’à 50 enregistrements correspondant à une option de requête système sont récupérés.

Contenu de la rubrique

Utilisation d’ATOM

Par exemple, lorsque vous récupérez un seul enregistrement de compte à l’aide de la bibliothèque System.Data.Services.Client dans le code géré.

Demande HTTP

GET <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept-Charset: UTF-8
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
Accept:  application/atom+xml,application/xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

Réponse HTTP

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 28231
Content-Type:  application/atom+xml;charset=utf-8
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:51 GMT

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="<organization root>/XRMServices/2011/OrganizationData.svc/" 
   xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
   xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
   xmlns="http://www.w3.org/2005/Atom">
  <id><organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
  <title type="text">New Account Created </title>
  <updated>2010-07-22T22:51:51Z</updated>
  <author>
    <name />
  </author>
  <link rel="edit" title="Account" href="AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')" />
[Links removed for brevity]
  <category 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
  />
  <content type="application/xml">
    <m:properties>
[Properties removed for brevity]
    </m:properties>
  </content>
</entry>

Contenu de la rubrique

Utilisation de JSON

Par exemple, lorsque vous récupérez un enregistrement de compte à l’aide de l’objet XMLHttpRequest dans le navigateur.

Demande HTTP

GET <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Content-Type:  application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept:  application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

Réponse HTTP

GET <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Content-Type:  application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept:  application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

Contenu de la rubrique

Mise à jour d’enregistrements

Dans OData, vous pouvez utiliser la méthode PUT ou la méthode MERGE pour mettre à jour les enregistrements.MERGE est utilisé pour éviter de surcharger la signification de PUT.

Une réponse de mise à jour réussie contient le code de statut HTTP 204 et ne renvoie pas de contenu.

Notes

Pour définir des valeurs de type complexe Microsoft Dynamics 365 sur null, définissez toutes les propriétés du type complexe sur null. Pour plus d'informations, voir Définition des types complexes sur null.

Notes

Certaines bibliothèques peuvent ne pas inclure le corps de la demande lors de l’envoi d’une demande PUT ou MERGE au serveur. Comme alternative, OData prend en charge le Tunnelage de méthode via POST à l’aide de l’opérateur HTTP POST. Pour utiliser le tunnelage de méthode, envoyez une opération HTTP POST et définissez l’en-tête X-HTTP-Method en indiquant l’opération HTTP à exécuter. Par exemple, pour envoyer une demande MERGE, l’opération HTTP doit être POST et l’en-tête HTTP X-HTTP-Method doit être MERGE.

Mise à jour à l’aide de PUT

Important

La mise à jour des enregistrements avec PUT remplace l’enregistrement existant par les données fournies. Toutes les valeurs de propriété de l’enregistrement prennent les valeurs fournies dans la demande ou sont définies sur leurs valeurs par défaut si elles ne sont pas incluses dans la demande. Les liens ne sont pas remplacés.

Utilisez PUT lorsque vous mettez à jour des propriétés individuelles. Pour plus d'informations, consultez la rubrique Mise à jour des propriétés individuelles.

Mise à jour à l’aide de MERGE

La logique de mise à jour standard dans Microsoft Dynamics 365 correspond au comportement généralement défini en utilisant MERGE. Les valeurs de propriété incluses dans la demande sont appliquées uniquement à ces propriétés. Les autres données de propriété ne sont pas modifiées.

Important

Si vous ne faites rien pour atténuer ce comportement, lorsque vous utilisez les classes proxy dans le code géré pour mettre à jour les enregistrements d’entités récupérés, MERGE est utilisé et toutes les propriétés sont mises à jour. Cela est particulièrement vrai si les valeurs des propriétés ne sont pas modifiées. Cela peut entraîner des résultats secondaires peu souhaitables lorsque d’autres fonctionnalités entraînées par les événements, telles que les workflows ou les plug-ins, détectent que la propriété a été mise à jour. En outre, l’audit enregistrera que la propriété a été mise à jour.

En outre, si une instance d’entité est instanciée au lieu d’être récupérée, toutes les propriétés de l’entité sont retournées avec la demande MERGE. Toutes les propriétés qui ne sont pas définies dans le code seront null. Ces valeurs null remplacent toutes les valeurs existantes de l’enregistrement.

Vous pouvez pallier ce comportement en implémentant un gestionnaire d’événements pour les événements DataServiceContextReadingEntity et WritingEntity.

Contenu de la rubrique

Utilisation d’ATOM

Par exemple, lors de la mise à jour d’un enregistrement de compte à l’aide de la bibliothèque System.Data.Services.Client dans le code géré :

Demande HTTP

POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/atom+xml,application/xml
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
x-http-method: MERGE
Accept-Charset: UTF-8
Content-Type:  application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 26753
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry 
   xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" 
   xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
   xmlns="http://www.w3.org/2005/Atom">
  <category 
   scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" 
   term="Microsoft.Crm.Sdk.Data.Services.Account" 
  />
  <title type="text">Account updated </title>
  <author>
    <name />
  </author>
  <updated>2010-07-22T22:51:51.0053481Z</updated>
  <id><organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
  <content type="application/xml">
    <m:properties>
[Properties removed for brevity]
    </m:properties>
  </content>
</entry>

Réponse HTTP

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:51 GMT

Contenu de la rubrique

Utilisation de JSON

Par exemple, lorsque vous mettez à jour un enregistrement de compte à l’aide de l’objet XMLHttpRequest dans le navigateur.

Demande HTTP

POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/json
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
x-http-method: MERGE
Content-Type:  application/json; charset=utf-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 117
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

{"Name":"Updated Sample","Telephone1":"555-0123","AccountNumber":"ABCDEFGHIJ","EMailAddress1":"someone1@example.com"}

Réponse HTTP

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:41 GMT

Suppression d'enregistrements

Utilisez une demande POST avec l’en-tête X-HTTP-METHOD défini sur DELETE avec une référence URI à l’enregistrement à supprimer.

Notes

Bien que la spécification OData indique qu’une opération de suppression réussie doit renvoyer un code de statut HTTP de 200 (OK), l’implémentation Microsoft Dynamics 365 renvoie 204 (Aucun contenu).

Pour plus d'informations, voir Association et dissociation d’enregistrements.

Contenu de la rubrique

Utilisation d’ATOM

Par exemple, lorsque vous supprimez un enregistrement de compte à l’aide de la bibliothèque System.Data.Services.Client dans le code géré.

Demande HTTP

POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/atom+xml,application/xml
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
x-http-method: DELETE
Accept-Charset: UTF-8
Content-Type:  application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 0
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

Réponse HTTP

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:54 GMT

Contenu de la rubrique

Utilisation de JSON

Par exemple, lorsque vous supprimez un enregistrement de compte à l’aide de l’objet XMLHttpRequest dans le navigateur.

Demande HTTP

POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Accept:  application/json
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
x-http-method: DELETE
Content-Type:  application/json; charset=utf-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 0
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>

Réponse HTTP

HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:57 GMT

Contenu de la rubrique

Codes de statut HTTP

Les détails des codes de statut HTTP retournés sont disponibles dans OData endpoint Http status codes.

Voir aussi

Utiliser le point de terminaison OData avec les ressources Web
Exécuter des opérations de données supplémentaires en utilisant le point de terminaison OData
Utiliser le point de terminaison OData avec les ressources Web Ajax et JScript
OData endpoint Http status codes

© 2017 Microsoft. Tous droits réservés. Copyright