다음을 통해 공유


웹 API 기본 작업 샘플

 

게시 날짜: 2017년 1월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

이 그룹의 샘플은 기본 CRUD(만들기, 검색, 업데이트 및 삭제)및 Microsoft Dynamics 365 웹 API를 사용하는 관련 작업을 수행하는 방법에 대해 설명합니다. 이 샘플은 다음 언어에 대해 별도 프로젝트로 구현됩니다.

이 항목에서는 그룹의 각 샘플이 구현하는 작업의 공통 집합에 대해 설명합니다. 이 항목에서는 특정 언어에 대한 세부 내용 없이 이 그룹의 각 샘플이 수행할 HTTP 요청 및 응답과 텍스트에 대해 다룹니다. 특정 언어에 대한 설명 및 이 작업을 수행하는 방법에 대한 개별 샘플의 자세한 내용을 참조하십시오.

시연

이 샘플은 웹 관련 개념 항목에서 보다 자세히 다룰 Dynamics 365 웹 API 작업을 포함하는 다음의 섹션으로 구분됩니다.

코드 섹션

관련 개념 항목

섹션 1: 기본 만들기 및 업데이트 작업

기본 만들기
반환된 데이터로 만들기
기본 업데이트
반환된 데이터로 업데이트

섹션 2: 연결 만들기

만들 때 엔터티 연결

섹션 3: 관련된 엔터티 만들기(깊은 삽입)

한 번 작업으로 관련 엔터티를 만듭니다.

섹션 4: 기존 엔터티 연결 및 연결 해제

웹 API를 사용하여 엔터티 연결 및 연결 해제

섹션 5: 엔터티 삭제(샘플 정리)

기본 삭제

참고

요약하자면, 덜 관련된 HTTP 헤더가 생략되었습니다. 레코드의 URL는 사용자 Dynamics 365 서버가 할당한 기본 조직 주소와 레코드 ID에 따라 다릅니다.

섹션 1: 기본 만들기 및 업데이트 작업

이 섹션에서 하나의 연락처를 만든 다음 해당 인스턴스에 일련의 업데이트를 수행합니다. 응답 헤더 OData-EntityId에는 괄호에 이 레코드의 고유 ID를 포함하는 새로 만든 레코드(엔터티 인스턴스)에 대한 URL이 포함됩니다.

  1. Peter Cambel이라는 이름의 새 연락처를 만듭니다.

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

    HTTP 응답

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)
    

    콘솔 출력

    Contact 'Peter Cambel' created.
    

    각 유형에 대해 사용할 수 있는 속성은 메타데이터 문서 내에서 정의되며 각 유형에 대해 Web API EntityType Reference 섹션에서 설명하고 있습니다. 일반적인 내용은 웹 API 종류 및 운영을 참조하십시오.

  2. 연간 수입 ($80,000) 및 직급(Junior Developer)에 대한 값으로 연락처를 업데이트합니다.

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

    HTTP 응답

    HTTP/1.1 204 No Content
    

    콘솔 출력

    Contact 'Peter Cambel' updated with job title and annual income.
    
  3. 명시적으로 초기화된 속성 집합을 사용하여 연락처를 검색합니다.fullname은 인스턴스를 만들 때 명시적으로 초기화되는 firstnamelastname 속성에서 계산된 읽기 전용 속성입니다. 반면에, description 속성은 명시적으로 초기화되어 있지 않기 때문에 기본값인 null 문자열을 그대로 보존합니다.

    응답은 요청한 값 및 일반적인 헤더에 추가적으로 자동으로 다음과 같은 유형의 추가 정보를 반환합니다.

    • 현재 엔터티 형식에 대한 기본 ID, 여기에서는 contactid.

    • 특정 버전의 요청한 리소스를 식별하는 @odata.etag 키로 표시한 ETag 값입니다. 자세한 내용은 웹 API를 사용하여 조건부 작업을 수행을 참조하십시오.

    • @odata.context 키 나타내는 메타데이터 컨텍스트는 쿼리 결과를 비교하여 쿼리 결과가 동일한 쿼리에서 가져온 것인지 확인합니다.

    • 통화 거래의 현지 통화를 나타내는 _transactioncurrencyid_value.

    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
    

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

    콘솔 출력

    Contact 'Peter Cambel' retrieved:
            Income: 80000
            Job title: Junior Developer
            Description: .
    

    중요

    성능을 최적화하기 위해 항상 검색 작업에서 선택 및 필터링을 사용해야 합니다. 자세한 내용은 웹 API를 사용하여 데이터 쿼리을 참조하십시오.

  4. 같은 속성에 새 값을 입력하여 연락처 엔터티 인스턴스를 업데이트합니다.

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

    HTTP 응답

    HTTP/1.1 204 No Content
    

    콘솔 출력

    Contact 'Peter Cambel' updated:
            Job title: Senior Developer
            Annual income: 95000
            Description: Assignment to-be-determined
    

    중요

    업데이트 요청에 변경된 속성만을 보냅니다. 자세한 내용은 기본 업데이트을 참조하십시오.

  5. 단일 속성인 기본 전화 번호를 명시적으로 설정합니다. 이것은 PUT 요청이며 value라는 이름의 JSON 키는 개별 속성에 대한 작업을 수행할 때 사용됩니다.

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

    HTTP 응답

    HTTP/1.1 204 No Content
    

    콘솔 출력

    Contact 'Peter Cambel' phone number updated.
    
  6. 동일한 단일 속성인 기본 전화 번호를 검색합니다.value라는 이름의 키의 사용을 다시 참고합니다.

    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
    

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

    콘솔 출력

    Contact's telephone# is: 555-0105.
    
  7. 유사한 연락처를 만들고 동일한 작업에서 인스턴스 정보를 전달합니다. 이 후자의 기능은 Prefer: return=representation 헤더에서 활성화됩니다. 이 기능은 Dynamics 365용 2016년 12월 업데이트(온라인 및 온-프레미스) 버전에서 도입되었으며 8.2 이상의 버전이 필요합니다.

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

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

    콘솔 출력

    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. 이 유사한 연락처를 업데이트하고 동일한 작업에서 인스턴스 정보를 전달합니다. 다시 한 번 이 기능은 Prefer: return=representation 헤더에서 활성화됩니다. 이 기능은 Dynamics 365용 2016년 12월 업데이트(온라인 및 온-프레미스) 버전에서 도입되었으며 8.2 이상의 버전이 필요합니다.

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

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

    콘솔 출력

    Contact 'Peter_Alt Cambel' updated:
            Annual income: 95000
            Job title: Senior Developer
    

섹션 2: 연결 만들기

이 섹션에서 Contoso, Ltd.라는 새 계정 인스턴스를 만들고 이를 섹션 1: 기본 만들기 및 업데이트 작업에서 만든 기존 연락처인 Peter Cambel에 연결합니다. 만들기 및 연결은 단일 POST 작업에서 수행됩니다.

  1. Contoso, Ltd. 계정을 만들고 기본 연락처 특성을 기존 연락처인 Peter Cambel로 설정합니다.@odata.bind 주석은 여기에서 primarycontactid 단일 값 탐색 속성을 기존 연락처인 Peter Cambel에 바인딩하여 연결이 만들어짐을 나타냅니다.

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

    HTTP 응답

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03)
    

    콘솔 출력

    Account 'Contoso Inc' created.
    
  2. 다시 $expandprimarycontactid 단일 값 탐색 속성과 함께 사용하여 연결된 contact EntityType 레코드에 액세스함으로써 거래처 Contoso, Ltd.에 대한 기본 연락처를 검색합니다.

    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
    

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

    콘솔 출력

    Account 'Contoso Inc' has primary contact 'Peter Cambel':
         Job title: Senior Developer
         Income: 95000
    

섹션 3: 관련된 엔터티 만들기(깊은 삽입)

이 섹션에서는 단일 POST 요청에서 엔터티 인스턴스 및 관련된 엔터티 인스턴스를 만드는 방법을 보여줍니다. 이 메서드를 사용하여 모든 인스턴스가 새로 생성됩니다. 연결할 기존 인스턴스가 없습니다. 이 방법은 두 가지 이점이 있습니다. 여러 단순한 만들기 및 연결 작업을 한 번의 종합 작업으로 할 수 있기 때문에 훨씬 효율적입니다. 또한 원자 단위에서 이루어집니다. 여기에서 전체 작업이 성공하고 모든 관련된 개체가 생성되거나 작업이 실패하여 아무 개체도 만들어지지 않습니다.

이 섹션에서는 한 번의 요청에서 거래처, 거래처의 기본 연락처, 그 연락처에 대한 작업 집합을 만듭니다.

  1. 거래처 Fourth Coffee와 거래처의 기본 연락처 Susie Curtis 및 연락처와 관련된 작업 세 개를 한 번의 작업에서 만듭니다. 단일 값 primarycontactid 탐색 속성 및 컬렉션 값 탐색 속성 Contact_Tasks를 사용하여 이러한 관계를 각각 정의할 수 있습니다. 단일 값 탐색 속성이 개체 값을 취하는 반면, 컬렉션 값 탐색 속성은 배열 값을 취합니다.

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

    HTTP 응답

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)
    

    콘솔 출력

    Account 'Fourth Coffee' created.
    
  2. 선택적으로 새로 만든 Fourth Coffee 거래처와 거래처의 기본 연락처를 검색합니다. 단일 값 탐색 속성 primarycontactid에서 확장이 수행됩니다.

    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
    

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

    콘솔 출력

    Account 'Fourth Coffee' has primary contact 'Susie Curtis':
            Job title: Coffee Master
            Income: 48000
    
  3. 선택적으로 이전 작업에서 검색된 기본 연락처와 관련된 작업을 검색합니다. 컬렉션 값 탐색 속성 Contact_Tasks에서 확장이 수행됩니다.

    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
    

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

    콘솔 출력

    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
    

섹션 4: 기존 엔터티 연결 및 연결 해제

이 섹션에서 기존 엔터티 인스턴스를 연결하고 연결을 해제하는 방법을 보여줍니다. 연결을 구성하려면 POST 요청에서 전송되는 참조 URI와 관계 개체를 사용해야 합니다. 연결을 해제하려면 연결에 대한 참조 URI에 대해 DELETE 요청을 전송해야 합니다. 먼저 일대다 연결은 연락처 및 거래처 간에 형성됩니다. 다대다 연결은 하나의 경쟁 업체와 하나 이상의 영업 기회 간에 형성됩니다.

  1. contact_customer_accounts 컬렉션 값 탐색 속성을 사용하여 Peter Cambel을 거래처 Fourth Coffee의 연락처로 추가합니다. 특수 키 @odata.id를 사용해서 연결된 레코드를 지정할 수 있습니다.

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

    HTTP 응답

    HTTP/1.1 204 No Content
    

    콘솔 출력

    Contact 'Peter Cambel' associated to account 'Fourth Coffee'.
    
  2. 거래처 Fourth Coffee에 대한 연락처 컬렉션을 검색하여 이전 작업을 확인합니다. 응답에는 단일 요소, 즉 최근에 할당된 거래처인 Peter Cambel이 있는 배열이 포함됩니다.

    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
    

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

    콘솔 출력

    Contact list for account 'Fourth Coffee':
            Name: Peter Cambel, Job title: Senior Developer
    
  3. 방금 만든 거래처 Fourth Coffee와 연락처 Peter Cambel 간의 연결을 제거합니다.

    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
    

    HTTP 응답

    HTTP/1.1 204 No Content
    

    콘솔 출력

    Contact 'Peter Cambel' dissociated from account 'Fourth Coffee'.
    
  4. Adventure Works라는 이름의 경쟁 업체를 만듭니다.

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

    HTTP 응답

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(77f77a42-5f0e-e611-80e0-00155da84c03) 
    

    콘솔 출력

    Competitor 'Adventure Works' created.
    
  5. River rafting adventure라는 이름의 영업 기회를 만듭니다.

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

    HTTP 응답

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03) 
    

    콘솔 출력

    Opportunity 'River rafting adventure' created.
    
  6. 이 새로운 영업 기회를 새 경쟁 업체와 연결합니다. 이전에 일대다 연결에 사용한 것과 동일한 일반 구문이 다대다 연결에 사용됩니다.

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

    HTTP 응답

    HTTP/1.1 204 No Content
    

    콘솔 출력

    Opportunity 'River rafting adventure' associated with competitor 'Adventure Works'.
    
  7. 선택적으로 경쟁 업체 Adventure Works와 관련된 모든 영업 기회를 검색합니다. 하나의 영업 기회가 포함된 배열이 반환됩니다.

    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
    

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

    콘솔 출력

    Competitor 'Adventure Works' has the following opportunities:
            Name: River rafting adventure,
            Description: Sales team on a river-rafting offsite and team building
    
  8. 영업 기회와 경쟁 업체의 연결을 해제합니다. 다시 말하지만 여기에 일대다 연결을 제거하기 위해 사용된 동일한 일반 구문이 사용됩니다.

    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
    

    HTTP 응답

    HTTP/1.1 204 No Content
    

    콘솔 출력

    Opportunity 'River rafting adventure' disassociated from competitor 'Adventure Works'.
    

섹션 5: 엔터티 삭제(샘플 정리)

이 섹션에서는 엔터티 인스턴스를 삭제하는 방법을 보여줍니다. 해당 메시지는 삭제할 엔터티 인스턴스의 URI를 사용하는 간단한 DELETE 요청입니다. 대상 엔터티가 다른 엔터티와 부모-자식 관계를 가지는 경우 기본적으로 상위 인스턴스를 삭제하면 자동으로 모든 하위 인스턴스도 삭제됩니다. 예를 들어 이 샘플에서는 작업의 상위 인스턴스는 연락처입니다. 자세한 내용은 엔터티 관계 동작을 참조하십시오.

  1. 엔터티 URL 컬렉션의 각 요소가 삭제됩니다. 첫 번째는 Peter Cambel에 대한 연락처 레코드입니다.

    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
    

    HTTP 응답

    HTTP/1.1 204 No Content
    
  2. 이후 컬렉션을 통해 나머지 레코드 삭제가 반복됩니다.

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

참고 항목

Microsoft Dynamics 365 웹 API 사용
웹 API를 사용하여 엔터티 만들기
웹 API를 사용하여 엔터티 검색
웹 API를 사용하여 엔터티 업데이트 및 삭제
웹 API를 사용하여 엔터티 연결 및 연결 해제
웹 API 기본 작업 샘플(C#)
웹 API 기본 작업 샘플(클라이언트 쪽 JavaScript)

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 저작권 정보