Compartir a través de


Realizar las operaciones básicas de datos mediante el extremo de OData 

Publicado: noviembre de 2016

Se aplica a: Dynamics CRM 2015

Existen diversas bibliotecas o tecnologías que puede usar para ejecutar las solicitudes HTTP para realizar operaciones de datos mediante el extremo de OData con Microsoft Dynamics CRM 2015 y actualización de Microsoft Dynamics CRM Online 2015. En este tema se describe el formato de las solicitudes HTTP de bajo nivel. Independientemente de la biblioteca o tecnología que use, puede usar una herramienta proxy de depuración web como Fiddler para examinar el tráfico HTTP y comparar los resultados que ve con los requisitos del extremo de OData. En este tema se muestran ejemplos de solicitudes y respuestas HTTP capturadas mediante Fiddler. Parte del contenido de estos ejemplos se ha modificado para la abreviarlo y se incluyen <placeholders> en los puntos en que el contenido varía dependiendo de variables de entorno.

Para obtener más información acerca de las aplicaciones que usan una tecnología específica, vea: Usar el extremo de OData con recursos web Ajax y JScript

En este tema

Creación de registros

  • Mediante ATOM

  • Mediante JSON

Recuperación de registros

  • Mediante ATOM

  • Mediante JSON

Actualización de registros

  • Actualización mediante PUT

  • Actualización mediante MERGE

    • Mediante ATOM

    • Mediante JSON

Eliminación de registros

  • Mediante ATOM

  • Mediante JSON

Códigos de estado HTTP

Creación de registros

Los nuevos registros, o entradas, se crean ejecutando una solicitud POST HTTP en el URI de la recopilación donde se va a crear la entrada. La nueva entrada se incluye en el cuerpo de la solicitud POST usando el formato ATOM o JSON.

El servidor asigna valores predeterminados a las propiedades no especificadas en la solicitud y devuelve el resultado con un encabezado ‘Location’ que contiene la dirección URL del registro que se ha creado. El elemento de título de la entrada refleja el atributo principal de la entidad. Por ejemplo, para la entidad account, el atributo name es el atributo principal. El código de estado HTTP 201 indica que el registro se creó correctamente.

Para obtener más información acerca de una forma alternativa de crear registros nuevos en el contexto de un registro relacionado, vea Uso de la inserción en profundidad.

Mediante ATOM

Por ejemplo, cuando se crea un nuevo registro account mediante la biblioteca System.Data.Services.Client en el código administrado.

Solicitud 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>

Respuesta 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>

En este tema

Mediante JSON

Por ejemplo, cuando se crea un nuevo registro de cuenta mediante el objeto XMLHttpRequest desde el explorador.

Solicitud 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"}

Respuesta 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]
 }
}

En este tema

Recuperación de registros

Para recuperar registros se usa la solicitud GET de HTTP. Cuando se proporciona un identificador único para un registro específico, solo se recupera ese registro. De lo contrario, se aplicarán las opciones de consulta del sistema que estén definida y se recuperarán hasta 50 registros que coincidan con cualquiera de los filtros de opciones de consulta del sistema.

En este tema

Mediante ATOM

Por ejemplo, cuando se recupera un único registro de cuenta mediante la biblioteca System.Data.Services.Client en el código administrado.

Solicitud 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>

Respuesta 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>

En este tema

Mediante JSON

Por ejemplo, cuando se recupera un registro de cuenta mediante el objeto XMLHttpRequest desde el explorador.

Solicitud 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>

Respuesta 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>

En este tema

Actualización de registros

En OData, puede usar el método PUT o el método MERGE para actualizar registros.MERGE se usa para evitar sobrecargar el significado de PUT.

Una respuesta de actualización correcta contiene el código de estado HTTP 204 y no devuelve contenido.

Nota

Para establecer valores de tipo complejo de Microsoft Dynamics 365 en null, establezca todas las propiedades del tipo complejo en null. Para obtener más información, vea Establecer tipos complejos en null.

Nota

Es posible que algunas bibliotecas no incluyan el cuerpo de la solicitud al enviar una solicitud PUT o MERGE al servidor. Como solución alternativa, OData admite la Tunelización de métodos a través de Post mediante el operador POST de HTTP. Para usar la tunelización de métodos, envíe una operación POST de HTTP y establezca el encabezado X-HTTP-Method en la operación HTTP que desea ejecutar. Por ejemplo, para enviar una solicitud MERGE, la operación HTTP debe ser POST y el encabezado de HTTP X-HTTP-Method debe ser MERGE.

Actualización mediante PUT

Importante

Al actualizar registros usando PUT se sustituye el registro existente por los datos proporcionados. Todos los valores de las propiedades del registro toman los valores proporcionados en la solicitud o se establecen en sus valores predeterminados si no se incluyen en la solicitud. Los vínculos no se sustituyen.

Use PUT para actualizar propiedades individuales. Para obtener más información, consulte Actualizar las propiedades individuales

Actualización mediante MERGE

La lógica típica de actualización de Microsoft Dynamics 365 coincide con el comportamiento definido normalmente mediante MERGE. Los valores de las propiedades incluidas en la solicitud solo se aplican a esas propiedades. Los datos de las demás propiedades no cambian.

Importante

A menos que se realicen acciones para mitigar este comportamiento, cuando se usan las clases de proxy en el código administrado para actualizar los registros de entidad recuperados, se usa MERGE y se actualizan todas las propiedades. Esto es cierto incluso si el valor de las propiedades no cambia. Esto puede provocar efectos secundarios indeseables cuando otras características controladas por eventos, como los flujos de trabajo o los complementos, detectan que se ha actualizado la propiedad. Además, en la auditoría se registrará que la propiedad se ha actualizado.

Es más, si una instancia de entidad se crea en lugar de recuperarse, se devuelven todas las propiedades de la entidad con la solicitud MERGE. Todas las propiedades que no estén establecidas en el código tendrán el valor null. Estos valores null sobrescriben los valores existentes en el registro.

Puede mitigar este comportamiento implementando un controlador de eventos para los eventos ReadingEntity y WritingEntity de DataServiceContext.

En este tema

Mediante ATOM

Por ejemplo, cuando se actualiza un registro de cuenta mediante la biblioteca System.Data.Services.Client en el código administrado:

Solicitud 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>

Respuesta 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

En este tema

Mediante JSON

Por ejemplo, cuando se actualiza un registro de cuenta mediante el objeto XMLHttpRequest desde el explorador.

Solicitud 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"}

Respuesta 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

Eliminación de registros

Use una solicitud POST con el conjunto del encabezado X-HTTP-METHOD para DELETE (eliminar) con una referencia de un URI al registro que se va a eliminar.

Nota

Aunque la especificación OData indica que una operación de eliminación correcta debe devolver un código de estado de HTTP 200 (OK), la implementación de Microsoft Dynamics 365 devuelve 204 (sin contenido).

Para obtener más información, vea Asociar y anular la asociación de registros.

En este tema

Mediante ATOM

Por ejemplo, cuando se elimina un registro de cuenta mediante la biblioteca System.Data.Services.Client en el código administrado.

Solicitud 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>

Respuesta 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

En este tema

Mediante JSON

Por ejemplo, cuando se elimina un registro de cuenta mediante el objeto XMLHttpRequest desde el explorador.

Solicitud 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>

Respuesta 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

En este tema

Códigos de estado HTTP

Los detalles acerca de los códigos de estado HTTP devueltos están disponibles en OData endpoint Http status codes.

Ver también

Usar el extremo de OData con recursos web
Realice las operaciones adicionales de datos mediante el extremo de OData
Usar el extremo de OData con recursos web Ajax y JScript
OData endpoint Http status codes

© 2017 Microsoft. Todos los derechos reservados. Copyright