다음을 통해 공유


웹 API를 사용하여 엔터티 업데이트 및 삭제

 

게시 날짜: 2017년 1월

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

데이터를 수정하는 작업은 웹 API의 핵심 부분입니다. 간단한 업데이트 및 삭제는 물론, 단일 특성에 대한 작업을 수행하고 존재 여부에 따라 엔터티를 업데이트하거나 삽입하는 upsert 요청을 작성할 수 있습니다.

참고

엔터티를 정의하는 메타데이터는 다른 방식으로 업데이트됩니다.추가 정보:Web API를 사용하여 엔터티 정의 만들기 및 업데이트

이 항목의 내용

기본 업데이트

반환된 데이터로 업데이트

단일 속성 값 업데이트

단일 속성 값 삭제

엔터티 Upsert

기본 삭제

기본 업데이트

업데이트 작업은 HTTP PATCH 동사를 사용합니다. 엔터티를 나타내는 URI로 업데이트하려는 속성을 포함한 JSON 개체를 전달합니다. 업데이트가 완료되면 204 상태로 응답이 반환됩니다.

이 예시는 00000000-0000-0000-0000-000000000001의 accountid 값으로 기존 거래처 레코드를 업데이트합니다.

중요

엔터티 업데이트 시, 요청 본문에서 변경하는 속성만 포함합니다. 단순히 이전에 검색한 엔터티 속성을 업데이트 하고 요청의 해당 JSON을 포함하면 값이 같더라도 각 속성을 업데이트합니다. 그러면 실제로 변경되지 않은 감사 데이터에 속성이 업데이트된 것으로 나타날 수 있습니다.

  • 요청

    PATCH cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
    {
        "name": "Updated Sample Account ",
        "creditonhold": true,
        "address1_latitude": 47.639583,
        "description": "This is the updated description of the sample account",
        "revenue": 6000000,
        "accountcategorycode": 2
    }
    
  • 응답

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    

참고

업데이트에 대한 엔터티 연결에 대한 자세한 내용은 업데이트 시 엔터티 연결 문서를 참조하십시오.

반환된 데이터로 업데이트

참고

이 기능은 Dynamics 365용 2016년 12월 업데이트(온라인 및 온-프레미스)에서 추가되었습니다.

업데이트하는 엔터티에서 데이터를 검색하려면 PATCH 요청을 작성하여 생성된 레코드의 데이터가 200 (OK) 상태와 함께 반환되도록 할 수 있습니다. 이 결과를 얻으려면 요청 헤더에 return=representation 선호 설정을 사용해야 합니다.

반환되는 속성을 제어하기 위해 엔터티 집합에 대한 URL에 $select 쿼리 옵션을 추가합니다.$expand 쿼리 옵션은 사용된 경우 무시됩니다.

이 예제에서는 계정 엔터티를 업데이트하고 응답에서 요청된 데이터를 반환합니다.

  • 요청

    PATCH cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)?$select=name,creditonhold,address1_latitude,description,revenue,accountcategorycode,createdon HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    Prefer: return=representation
    
    {"name":"Updated Sample Account"}
    
  • 응답

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    Preference-Applied: return=representation
    OData-Version: 4.0
    
    {
        "@odata.context": "cc_WebAPI_ServiceURI/$metadata#accounts/$entity",
        "@odata.etag": "W/\"536537\"",
        "accountid": "00000000-0000-0000-0000-000000000001",
        "accountcategorycode": 1,
        "description": "This is the description of the sample account",
        "address1_latitude": 47.63958,
        "creditonhold": false,
        "name": "Updated Sample Account",
        "createdon": "2016-09-28T23:14:00Z",
        "revenue": 5000000.0000,
        "_transactioncurrencyid_value": "048dddaa-6f7f-e611-80d3-00155db5e0b6"
    }
    

단일 속성 값 업데이트

단일 속성 값만 업데이트하려는 경우에는 엔터티의 Uri에 첨부된 속성 이름으로 PUT 요청을 사용합니다.

다음 예제는 00000000-0000-0000-0000-000000000001의 accountid 값으로 기존 거래처 엔터티 name 속성을 업데이트합니다.

  • 요청

    PUT cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)/name HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
    {"value": "Updated Sample Account Name"}
    
  • 응답

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    

단일 속성 값 삭제

단일 속성 값을 삭제하려면 엔터티의 Uri에 첨부된 속성 이름으로 DELETE 요청을 사용합니다.

다음 예제는 00000000-0000-0000-0000-000000000001의 accountid 값으로 기존 거래처 엔터티 description 속성 값을 삭제합니다.

  • 요청

    DELETE cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001)/description HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • 응답

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    

참고

이것을 단일 값 탐색 속성과 함께 사용하여 두 엔터티의 연결을 해체할 수 없습니다. 다른 방법은 엔터티에 대한 참조 삭제를 참조하십시오.

엔터티 Upsert

upsert 작업은 업데이트와 동일합니다.PATCH 요청을 사용하고 URI를 사용하여 특정 엔터티를 참조합니다. 엔터티가 존재하지 않는 경우 차이가 생깁니다. 이미 있는 경우에는 업데이트 됩니다. 일반적으로 새 엔터티를 만들 경우 시스템에서 고유 식별자를 할당하도록 합니다. 이것이 모범 사례입니다. 하지만 특정 id 값으로 레코드를 만들어야 할 경우, upsert 작업이 이를 수행할 방법을 제공합니다. 이 방법은 다른 시스템의 데이터를 동기화하는 상황에서 매우 유용하게 사용할 수 있습니다.

종종 upsert를 사용할 상황이 있지만, 만들기 또는 업데이트의 잠재적인 기본 작업 중 하나를 방지하고 싶은 경우가 있습니다.If-Match 또는 If-None-Match 머리글을 추가하여 이를 수행할 수 있습니다. 자세한 내용은 upsert 작업 제한을 참조하십시오.

기본 삭제

삭제 작업은 매우 간단합니다. 삭제를 원하는 엔터티의 URI와 함께 DELETE 동사를 사용합니다. 다음 예제 Message는 00000000-0000-0000-0000-000000000001와 동일한 기본 키 accountid 값으로 거래처 엔터티를 삭제합니다.

  • 요청

    DELETE cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • 응답
    엔터티가 있는 경우 삭제가 성공 했음을 나타내는 204 상태로 정상적인 응답을 얻을 수 있습니다. 엔터티가 없으면 404 상태로 응답을 얻을 수 있습니다.

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    

참고 항목

웹 API 기본 작업 샘플(C#)
웹 API 기본 작업 샘플(클라이언트 쪽 JavaScript)
웹 API를 사용하여 작업 수행
HTTP 요청 및 처리 오류 작성
웹 API를 사용하여 데이터 쿼리
웹 API를 사용하여 엔터티 만들기
웹 API를 사용하여 엔터티 검색
웹 API를 사용하여 엔터티 연결 및 연결 해제
웹 API 기능 사용
웹 API 작업 사용
웹 API를 사용하여 일괄 작업 실행
웹 API를 사용하여 다른 사용자를 가장
웹 API를 사용하여 조건부 작업을 수행

Microsoft Dynamics 365

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