Compartir a través de


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
Crear con datos devueltos
Actualización básica
Actualizar con datos devueltos

Sección 2: Crear con asociación

Asociar entidades en la creación

Sección 3: Crear entidades relacionadas (inserción en profundidad)

Crear entidades relacionadas en una operación

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)

Eliminación básica

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.

  1. 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.

  2. 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.
    
  3. 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.

  4. 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.

  5. 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.
    
  6. 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.
    
  7. 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)
    
  8. 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.

  1. 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.
    
  2. 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.

  1. 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.
    
  2. 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
    
  3. 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.

  1. 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'.
    
  2. 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
    
  3. 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'.
    
  4. 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.
    
  5. 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.
    
  6. 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'.
    
  7. 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
    
  8. 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.

  1. 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
    
  2. 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