Ejemplo de operaciones básicas de la API web
Publicado: enero de 2017
Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Este grupo de ejemplos demuestra cómo realizar operaciones básicas CRUD (crear, recuperar, actualizar y eliminar) y asociativas mediante la API web de Microsoft Dynamics 365. Este ejemplo se implementa como proyecto independiente para los siguientes idiomas:
En este tema se describe un conjunto común de operaciones implementadas por cada ejemplo en este grupo. En este tema se describen las solicitudes y las respuestas HTTP y el texto generado que cada ejemplo en este grupo realizará sin detalles específicos de idioma. Consulte las descripciones específicas del idioma y los ejemplos individuales para obtener más información acerca de cómo se realizan estas operaciones.
Demostraciones
Este ejemplo se divide en las siguientes secciones, que contienen operaciones de datos de consulta de la API web de Dynamics 365 que se describen minuciosamente en los temas conceptuales asociados especificados.
Sección de código |
Temas conceptuales asociados |
---|---|
Sección 1: Operaciones básicas crear y actualizar |
Crear básico |
Sección 2: Crear con asociación |
|
Sección 3: Crear entidades relacionadas (inserción en profundidad) |
|
Sección 4: Asocie y desasocie entidades existentes |
Asociar y anular la asociación de entidades mediante la API web |
Sección 5: Eliminar entidades (limpieza de ejemplo) |
Nota
Para razones de brevedad, se han omitido los encabezados HTTP menos pertinentes. Las direcciones URL de los registros variarán con la dirección de la organización base y el identificador del registro asignado por el servidor de Dynamics 365.
Sección 1: Operaciones básicas crear y actualizar
Esta sección crea un solo contacto y después realiza una serie de actualizaciones sobre esa instancia. Tenga en cuenta que el encabezado de respuesta OData-EntityId contiene la dirección URL de este registro recién creado (instancia de entidad), que incluye entre paréntesis el identificador único de este registro.
Cree un nuevo contacto llamado Peter Cambel.
Solicitud HTTP
POST http://cc_WebAPI_ServiceURI/contacts HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0 { "firstname": "Peter", "lastname": "Cambel" }
Respuesta HTTP
HTTP/1.1 204 No Content OData-Version: 4.0 OData-EntityId: http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)
Salida de la consola
Contact 'Peter Cambel' created.
Las propiedades disponibles para cada tipo se definen en el documento de metadatos y también se documentan para cada tipo en la sección Web API EntityType Reference. Para obtener más información general, vea Tipos y operaciones de API web.
Actualice el contacto con valores de ingresos anuales ($80,000) y el puesto (Junior Developer).
Solicitud HTTP
PATCH http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0 { "annualincome": 80000, "jobtitle": "Junior Developer" }
Respuesta HTTP
HTTP/1.1 204 No Content
Salida de la consola
Contact 'Peter Cambel' updated with job title and annual income.
Recupere el contacto con su conjunto de propiedades inicializadas de forma explícita. El fullname es una propiedad de sólo lectura que se calcula desde las propiedades firstname y lastname, que se inicializaron de forma explícita cuando se creó la instancia. En cambio, la propiedad description no se inicializó explícitamente, por lo que mantiene su valor predeterminado, una cadena null.
Tenga en cuenta que la respuesta, además de los valores solicitados y los encabezados típicos, también devuelven automáticamente los siguientes tipos de información adicional:
El identificador principal para el tipo de entidad actual, aquí contactid.
Un valor ETag, denotado por la clave @odata.etag, que identifica la versión específica del recurso solicitado. Para obtener más información, vea Realizar operaciones condicionales mediante la API web.
El contexto de metadatos, denotado por la clave @odata.context, proporciona una forma de comparar resultados de la consulta para determinar si proceden de la misma consulta.
Un _transactioncurrencyid_value que indica la divisa local de la transacción monetaria.
Solicitud HTTP
GET http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)?$select=fullname,annualincome,jobtitle,description HTTP/1.1 Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta HTTP
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,annualincome,jobtitle,description)/$entity", "@odata.etag":"W/\"628883\"", "fullname":"Peter Cambel", "annualincome":80000.0000, "jobtitle":"Junior Developer", "description":null, "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03", "contactid":"60f77a42-5f0e-e611-80e0-00155da84c03" }
Salida de la consola
Contact 'Peter Cambel' retrieved: Income: 80000 Job title: Junior Developer Description: .
Importante
Debe usar siempre la selección y filtrado en operaciones de recuperación para optimizar el rendimiento. Para obtener más información, vea Consultar datos utilizando la API web.
Actualice la instancia de la entidad de contacto proporcionando nuevos valores a estas mismas propiedades.
Solicitud HTTP
PATCH http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0 { "jobtitle": "Senior Developer", "annualincome": 95000, "description": "Assignment to-be-determined" }
Respuesta HTTP
HTTP/1.1 204 No Content
Salida de la consola
Contact 'Peter Cambel' updated: Job title: Senior Developer Annual income: 95000 Description: Assignment to-be-determined
Importante
Envíe solo propiedades cambiadas en solicitudes de actualización. Para obtener más información, vea Actualización básica.
Establezca explícitamente una sola propiedad, el número de teléfono principal. Tenga en cuenta que esto es una solicitud PUT y que la clave JSON llamada value se utiliza al realizar operaciones en propiedades individuales.
Solicitud HTTP
PUT http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1 HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0 { "value": "555-0105" }
Respuesta HTTP
HTTP/1.1 204 No Content
Salida de la consola
Contact 'Peter Cambel' phone number updated.
Recupere esa misma propiedad individual, el número de teléfono principal. Una vez más, note el uso de la clave llamada value.
Solicitud HTTP
GET http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1 HTTP/1.1 Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta HTTP
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1", "value":"555-0105" }
Salida de la consola
Contact's telephone# is: 555-0105.
Crea un contacto similar pero también devuelve la información de la instancia en la misma operación. Esta última capacidad está habilitada por el encabezado Prefer: return=representation. Esta funcionalidad se introdujo con Actualización de diciembre de 2016 para Dynamics 365 (online y local) y requiere la versión 8.2 o superior.
Solicitud HTTP
POST http://cc_WebAPI_ServiceURI/contacts?$select=fullname,annualincome,jobtitle,contactid HTTP/1.1 OData-Version: 4.0 Content-Type: application/json; charset=utf-8 Prefer: return=representation { "firstname": "Peter_Alt", "lastname": "Cambel", "jobtitle": "Junior Developer", "annualincome": 80000, "telephone1": "555-0110" }
Respuesta HTTP
HTTP/1.1 201 Created Content-Type: application/json; odata.metadata=minimal Preference-Applied: return=representation OData-Version: 4.0 { "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts/$entity","@odata.etag":"W/\"758870\"","_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03","annualincome":80000.0000,"contactid":"199250b7-6cbe-e611-80f7-00155da84c08","jobtitle":"Junior Developer","fullname":"Peter_Alt Cambel" }
Salida de la consola
Contact 'Peter_Alt Cambel' created: Annual income: 80000 Job title: Junior Developer Contact URI: http://cc_WebAPI_ServiceURI/contacts(199250b7-6cbe-e611-80f7-00155da84c08)
Actualiza este contacto similar y también devuelve la información de la instancia en la misma operación. Una vez más, esta capacidad está habilitada por el encabezado Prefer: return=representation. Esta funcionalidad se introdujo con Actualización de diciembre de 2016 para Dynamics 365 (online y local) y requiere la versión 8.2 o superior.
Solicitud HTTP
POST http://cc_WebAPI_ServiceURI/contacts?$select=fullname,annualincome,jobtitle,contactid HTTP/1.1 OData-Version: 4.0 Content-Type: application/json; charset=utf-8 Prefer: return=representation { "firstname": "Peter_Alt", "lastname": "Cambel", "jobtitle": "Junior Developer", "annualincome": 80000, "telephone1": "555-0110" }
Respuesta HTTP
HTTP/1.1 201 Created Content-Type: application/json; odata.metadata=minimal Preference-Applied: return=representation OData-Version: 4.0 { "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts/$entity","@odata.etag":"W/\"758870\"","_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03","annualincome":80000.0000,"contactid":"199250b7-6cbe-e611-80f7-00155da84c08","jobtitle":"Junior Developer","fullname":"Peter_Alt Cambel" }
Salida de la consola
Contact 'Peter_Alt Cambel' updated: Annual income: 95000 Job title: Senior Developer
Sección 2: Crear con asociación
Esta sección crea una nueva instancia de cuenta denominada Contoso, Ltd. y la asocia a un contacto existente, Peter Cambel, que se creó en Sección 1: Operaciones básicas crear y actualizar. Esta creación y asociación se realizan en una sola operación POST.
Cree la cuenta Contoso, Ltd. y establezca su atributo de contacto principal al contacto existente Peter Cambel. La anotación @odata.bind indica que se está creando a una asociación, enlazando aquí la propiedad de navegación de un solo valor primarycontactid con un contacto existente, Peter Cambel.
Solicitud HTTP
POST http://cc_WebAPI_ServiceURI/accounts HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0 { "name": "Contoso Inc", "telephone1": "555-5555", "primarycontactid@odata.bind": "http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)" }
Respuesta HTTP
HTTP/1.1 204 No Content OData-Version: 4.0 OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03)
Salida de la consola
Account 'Contoso Inc' created.
Recupere el contacto principal de la cuenta Contoso, Ltd., de nuevo usando $expand con la propiedad de navegación de un solo valor primarycontactid para acceder al registro contact EntityType asociado.
Solicitud HTTP
GET http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=primarycontactid($select=fullname,jobtitle,annualincome) HTTP/1.1 OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta HTTP
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid,primarycontactid(fullname,jobtitle,annualincome))/$entity", "@odata.etag":"W/\"628886\"", "name":"Contoso Inc", "accountid":"65f77a42-5f0e-e611-80e0-00155da84c03", "primarycontactid":{ "@odata.etag":"W/\"628885\"", "fullname":"Peter Cambel", "jobtitle":"Senior Developer", "annualincome":95000.0000, "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03", "contactid":"60f77a42-5f0e-e611-80e0-00155da84c03" } }
Salida de la consola
Account 'Contoso Inc' has primary contact 'Peter Cambel': Job title: Senior Developer Income: 95000
Sección 3: Crear entidades relacionadas (inserción en profundidad)
En esta sección se muestra cómo crear una instancia de entidad e instancias de entidad relacionada en una sola solicitud POST. Con este método, todas las instancias se crean nuevamente; no hay instancias existentes con las que asociar. Este método tiene dos ventajas. Es más eficiente, reemplazando múltiples operaciones más sencillas de creación y asociación con una operación combinada. Además, es atómico, pues o bien toda la operación se realiza correctamente y se crean todos los objetos relacionados, o la operación fracasa y no se crea ninguno.
Esta sección crea una cuenta, su contacto principal y un conjunto de tareas para ese contacto en una solicitud.
Cree la cuenta Fourth Coffee y su contacto principal Susie Curtis y sus tres tareas relacionadas en una operación. Tenga en cuenta el uso de la propiedad de navegación de un solo valor primarycontactid y la propiedad de navegación valorada como colección Contact_Tasks para definir estas relaciones, respectivamente. Las propiedades de navegación de un solo valor toman un valor de objeto, en tanto que las propiedades navegación valoradas como colección toman un valor de matriz.
Solicitud HTTP
POST http://cc_WebAPI_ServiceURI/accounts HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0 { "name": "Fourth Coffee", "primarycontactid": { "firstname": "Susie", "lastname": "Curtis", "jobtitle": "Coffee Master", "annualincome": 48000, "Contact_Tasks": [ { "subject": "Sign invoice", "description": "Invoice #12321", "scheduledend": "2016-04-19T00:00:00-07:00" }, { "subject": "Setup new display", "description": "Theme is - Spring is in the air", "scheduledstart": "2016-04-20T00:00:00-07:00" }, { "subject": "Conduct training", "description": "Train team on making our new blended coffee", "scheduledstart": "2016-06-01T00:00:00-07:00" } ] } }
Respuesta HTTP
HTTP/1.1 204 No Content OData-Version: 4.0 OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)
Salida de la consola
Account 'Fourth Coffee' created.
Recupere selectivamente la cuenta recién creada de Fourth Coffee y su contacto principal. Una extensión se realiza en la propiedad de navegación de un solo valor primarycontactid.
Solicitud HTTP
GET http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=primarycontactid($select=fullname,jobtitle,annualincome) HTTP/1.1 Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta HTTP
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid,primarycontactid(fullname,jobtitle,annualincome))/$entity", "@odata.etag":"W/\"628902\"", "name":"Fourth Coffee", "accountid":"6af77a42-5f0e-e611-80e0-00155da84c03", "primarycontactid":{ "@odata.etag":"W/\"628892\"", "fullname":"Susie Curtis", "jobtitle":"Coffee Master", "annualincome":48000.0000, "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03", "contactid":"6bf77a42-5f0e-e611-80e0-00155da84c03" } }
Salida de la consola
Account 'Fourth Coffee' has primary contact 'Susie Curtis': Job title: Coffee Master Income: 48000
Recupere selectivamente las tareas asociadas con el contacto principal recuperado en la operación anterior. Una extensión se realiza en la propiedad de navegación valorada como colección Contact_Tasks.
Solicitud HTTP
GET http://cc_WebAPI_ServiceURI/contacts(6bf77a42-5f0e-e611-80e0-00155da84c03)?$select=fullname,&$expand=Contact_Tasks($select=subject,description,scheduledstart,scheduledend) HTTP/1.1 Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta HTTP
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,Contact_Tasks,Contact_Tasks(subject,description,scheduledstart,scheduledend))/$entity", "@odata.etag":"W/\"628892\"", "fullname":"Susie Curtis", "contactid":"6bf77a42-5f0e-e611-80e0-00155da84c03", "Contact_Tasks":[ { "@odata.etag":"W/\"628903\"", "subject":"Sign invoice", "description":"Invoice #12321", "scheduledstart":"2016-04-19T00:00:00Z", "scheduledend":"2016-04-19T00:00:00Z", "activityid":"6cf77a42-5f0e-e611-80e0-00155da84c03" }, { "@odata.etag":"W/\"628905\"", "subject":"Setup new display", "description":"Theme is - Spring is in the air", "scheduledstart":"2016-04-20T00:00:00Z", "scheduledend":"2016-04-20T00:00:00Z", "activityid":"6df77a42-5f0e-e611-80e0-00155da84c03" }, { "@odata.etag":"W/\"628907\"", "subject":"Conduct training", "description":"Train team on making our new blended coffee", "scheduledstart":"2016-06-01T00:00:00Z", "scheduledend":"2016-06-01T00:00:00Z", "activityid":"6ef77a42-5f0e-e611-80e0-00155da84c03" } ] }
Salida de la consola
Contact 'Susie Curtis' has the following assigned tasks: Subject: Sign invoice, Description: Invoice #12321 Start: 4/19/2016 End: 4/19/2016 Subject: Setup new display, Description: Theme is - Spring is in the air Start: 4/20/2016 End: 4/20/2016 Subject: Conduct training Description: Train team on making our new blended coffee, Start: 6/1/2016 End: 6/1/2016
Sección 4: Asocie y desasocie entidades existentes
En esta sección se muestra cómo asociar y desasociar instancias de entidad existentes. La formación de una asociación requiere el uso de un URI de referencia y un objeto de relación, que a continuación se envían en una solicitud POST. Para desasociar se requiere el envío de una solicitud de ELIMINACIÓN al URI de referencia para esa asociación. Primero se forma una asociación de uno a varios entre un contacto y una cuenta. A continuación se forma una asociación de varios a varios entre un competidor y una o varias oportunidades.
Agregue a Peter Cambel como contacto a la cuenta de Fourth Coffee utilizando la propiedad de navegación valorada como colección contact_customer_accounts. Tenga en cuenta el uso de la clave especial@odata.id para especificar el registro asociado.
Solicitud HTTP
POST http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts/$ref HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0 { "@odata.id": "http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)" }
Respuesta HTTP
HTTP/1.1 204 No Content
Salida de la consola
Contact 'Peter Cambel' associated to account 'Fourth Coffee'.
Confirme la operación anterior recuperando la colección de contactos para la cuenta Fourth Coffee. La respuesta contiene la matriz con un solo elemento, el contacto recientemente asignado Peter Cambel.
Solicitud HTTP
GET http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts?$select=fullname,jobtitle HTTP/1.1 Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta HTTP
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,jobtitle)","value":[ { "@odata.etag":"W/\"632481\"","fullname":"Peter Cambel","jobtitle":"Senior Developer","contactid":"00b6e0e2-b010-e611-80e1-00155da84c03" } ] }
Salida de la consola
Contact list for account 'Fourth Coffee': Name: Peter Cambel, Job title: Senior Developer
Quite la asociación que se creó recientemente entre la cuenta Fourth Coffee y el contacto Peter Cambel.
Solicitud HTTP
DELETE http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts/$ref?$id=http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta HTTP
HTTP/1.1 204 No Content
Salida de la consola
Contact 'Peter Cambel' dissociated from account 'Fourth Coffee'.
Crear un competidor llamado Adventure Works.
Solicitud HTTP
POST http://cc_WebAPI_ServiceURI/competitors HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0 { "name": "Adventure Works", "strengths": "Strong promoter of private tours for multi-day outdoor adventures" }
Respuesta HTTP
HTTP/1.1 204 No Content OData-Version: 4.0 OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(77f77a42-5f0e-e611-80e0-00155da84c03)
Salida de la consola
Competitor 'Adventure Works' created.
Cree una oportunidad llamada River rafting adventure.
Solicitud HTTP
POST http://cc_WebAPI_ServiceURI/opportunities HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0 { "name": "River rafting adventure", "description": "Sales team on a river-rafting offsite and team building" }
Respuesta HTTP
HTTP/1.1 204 No Content OData-Version: 4.0 OData-EntityId: http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03)
Salida de la consola
Opportunity 'River rafting adventure' created.
Asocie esta nueva oportunidad a este nuevo competidor. Tenga en cuenta que en esta asociación de varios a varios se usa la misma sintaxis general que se usó en una asociación anterior de uno a varios.
Solicitud HTTP
POST http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03)/opportunitycompetitors_association/$ref HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0 { "@odata.id": "http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03)" }
Respuesta HTTP
HTTP/1.1 204 No Content
Salida de la consola
Opportunity 'River rafting adventure' associated with competitor 'Adventure Works'.
Recupere selectivamente todas las oportunidades asociadas al competidor Adventure Works. Una matriz se devuelve que contiene una sola oportunidad.
Solicitud HTTP
GET http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=opportunitycompetitors_association($select=name,description) HTTP/1.1 Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta HTTP
HTTP/1.1 200 OK { "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#competitors(name,opportunitycompetitors_association,opportunitycompetitors_association(name,description))/$entity", "@odata.etag":"W/\"628913\"", "name":"Adventure Works", "competitorid":"77f77a42-5f0e-e611-80e0-00155da84c03", "opportunitycompetitors_association":[ { "@odata.etag":"W/\"628917\"", "name":"River rafting adventure", "description":"Sales team on a river-rafting offsite and team building", "opportunityid":"7cf77a42-5f0e-e611-80e0-00155da84c03" } ] }
Salida de la consola
Competitor 'Adventure Works' has the following opportunities: Name: River rafting adventure, Description: Sales team on a river-rafting offsite and team building
Anule la asociación de la oportunidad del competidor. Observe de nuevo, que tiene la misma sintaxis general usada para quitar una asociación de uno a varios.
Solicitud HTTP
DELETE http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03)/opportunitycompetitors_association/$ref?$id=http://[Token-CRM-Org-Name]/Contoso/api/data/v8.1/competitors(77f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta HTTP
HTTP/1.1 204 No Content
Salida de la consola
Opportunity 'River rafting adventure' disassociated from competitor 'Adventure Works'.
Sección 5: Eliminar entidades (limpieza de ejemplo)
En esta sección se demuestra cómo eliminar instancias de la entidad. El mensaje correspondiente es una solicitud de ELIMINACIÓN directa que usa el URI de la instancia de entidad que se eliminará. Si la entidad de destino tiene una relación de primaria-secundaria con otras entidades, al eliminar el elemento primario, de forma predeterminada se eliminarán en cascada automáticamente las instancias secundarias. Por ejemplo, en este ejemplo, las tareas tienen contacto como primario. Para obtener más información, vea Comportamiento de relación de entidades.
Cada elemento de la recopilación de direcciones URL de la entidad se elimina. El primero es un registro de contacto para Peter Cambel.
Solicitud HTTP
DELETE http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1 Content-Type: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta HTTP
HTTP/1.1 204 No Content
Las iteraciones siguientes a través de la colección eliminan los registros restantes.
Solicitud HTTP
DELETE http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1 . . . DELETE http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1 . . . DELETE http://cc_WebAPI_ServiceURI/contacts(6bf77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1 . . . DELETE http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1 . . . DELETE http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1 . . .
Ver también
Use la API web de Microsoft Dynamics 365
Cree una entidad usando API web
Recuperar una entidad usando API web
Actualizar y eliminar entidades mediante la API web
Asociar y anular la asociación de entidades mediante la API web
Ejemplo de operaciones básicas de la API web (C#)
Ejemplo de operaciones básicas de la API web (JavaScript del lado del cliente)
Microsoft Dynamics 365
© 2017 Microsoft. Todos los derechos reservados. Copyright