다음을 통해 공유


OData 끝점을 사용하여 기본 데이터 작업 수행

 

게시 날짜: 2016년 11월

적용 대상: Dynamics CRM 2015

HTTP 요청을 사용하여 Microsoft Dynamics CRM 2015 및 Microsoft Dynamics CRM Online 2015 업데이트에서 OData 끝점을 사용하는 데이터 작업을 수행하는 데 사용할 수 있는 다양한 라이브러리 또는 기술이 있습니다. 이 항목은 낮은 수준의 HTTP 요청 형식에 대해 설명합니다. 사용하는 라이브러리 또는 기술에 관계 없이 Fiddler와 같은 웹 디버깅 프록시 도구를 사용하여 HTTP 트래픽을 검사하고 표시되는 결과를 OData 끝점의 요구 사항과 비교할 수 있습니다. 이 항목에서는 Fiddler를 사용하여 캡처한 HTTP 요청 및 응답 예제를 보여 줍니다. 이러한 예제의 콘텐츠 일부는 간단히 편집되었으며 환경 변수에 따라 콘텐츠가 달라지는 <placeholders>가 포함됩니다.

특정 기술을 사용하는 응용 프로그램에 대한 자세한 내용은 Ajax 및 JScript 웹 리소스와 함께 OData 끝점 사용을 참조하십시오.

이 항목의 내용

레코드 만들기

  • ATOM 사용

  • JSON 사용

레코드 검색

  • ATOM 사용

  • JSON 사용

레코드 업데이트

  • PUT을 사용하여 업데이트

  • MERGE를 사용하여 업데이트

    • ATOM 사용

    • JSON 사용

레코드 삭제

  • ATOM 사용

  • JSON 사용

HTTP 상태 코드

레코드 만들기

새 레코드 또는 항목은 항목이 만들어지는 컬렉션의 URI에 대한 HTTP POST 요청을 실행하여 만들어집니다. POST 요청의 본문에는 ATOM 또는 JSON 형식을 사용하여 새로운 항목이 포함됩니다.

서버 요청은 기본값을 요청에 지정되지 않은 속성에 할당하고 만든 레코드의 URL이 포함된 'Location' 헤더로 결과를 반환합니다. 항목 제목 요소는 엔터티의 기본 특성을 반영합니다. 예를 들어 account 엔터티의 경우 name 특성이 기본 특성입니다. HTTP 상태 코드 201은 레코드를 성공적으로 만들었음을 나타냅니다.

관련 레코드의 컨텍스트에서 새 레코드를 만드는 다른 방법에 대한 자세한 내용은 전체 삽입 사용을 참조하십시오.

ATOM 사용

예를 들어 관리형 코드에서 System.Data.Services.Client 라이브러리를 사용하여 새 account 레코드를 만드는 경우

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>

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>

이 항목의 내용

JSON 사용

예를 들어 브라우저에서 XMLHttpRequest 개체를 사용하여 새 거래처 레코드를 만드는 경우

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

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

이 항목의 내용

레코드 검색

HTTP GET는 레코드를 검색할 때 사용합니다. 특정 레코드에 대해 고유 식별자를 제공하는 경우 해당 레코드만 검색됩니다. 그렇지 않으면 정의된 모든 시스템 쿼리 옵션이 적용되고, 시스템 쿼리 옵션 필터와 일치하는 레코드가 최고 50개까지 검색됩니다.

이 항목의 내용

ATOM 사용

예를 들어 관리형 코드에서 System.Data.Services.Client 라이브러리를 사용하여 단일 거래처 레코드를 검색하는 경우

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>

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>

이 항목의 내용

JSON 사용

예를 들어 브라우저에서 XMLHttpRequest 개체를 사용하여 거래처 레코드를 검색하는 경우

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>

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>

이 항목의 내용

레코드 업데이트

OData에서 PUT 메서드 또는 MERGE 메서드를 사용하여 레코드를 업데이트할 수 있습니다.MERGEPUT의 의미를 오버로드하지 않도록 사용됩니다.

성공적인 업데이트 응답에는 HTTP 상태 코드 204가 들어 있으며 내용이 없습니다.

참고

Microsoft Dynamics 365 복합 유형 값을 null로 설정하려면 복합 유형의 모든 속성을 null로 설정합니다. 자세한 내용은 복합 유형을 null로 설정을 참조하십시오.

참고

PUT 또는 MERGE 요청을 서버에 제출할 때 일부 라이브러리에는 요청의 본문이 포함되지 않습니다. 해결 방법으로 OData는 POST HTTP 연산자를 사용하는 POST를 통해 터널링하는 방법을 지원합니다. 메서드 터널링을 사용하려면 POST HTTP 작업을 제출하고 X-HTTP-Method 헤더를 실행하려는 HTTP 작업으로 설정합니다. 예를 들어 MERGE 요청을 제출하려면 HTTP 작업은 POST여야 하고 X-HTTP-Method HTTP 헤더는 MERGE여야 합니다.

PUT을 사용하여 업데이트

중요

PUT을 사용하여 레코드를 업데이트하면 기존 레코드가 제공된 데이터로 바뀝니다. 레코드의 모든 속성 값은 요청에 제공된 값을 사용하거나 요청에 포함 되지 않은 경우 해당 기본값으로 설정됩니다. 링크는 바뀌지 않습니다.

개별 속성을 업데이트할 경우 PUT을 사용합니다. 자세한 내용은 개별 속성 업데이트을 참조하십시오.

MERGE를 사용하여 업데이트

Microsoft Dynamics 365에서 일반적인 업데이트 논리는 일반적으로 MERGE를 사용하여 정의된 동작과 일치합니다. 요청에 포함된 속성 값은 해당 속성에만 적용됩니다. 다른 속성 데이터는 변경되지 않습니다.

중요

이러한 동작을 완화시키는 단계를 사용하지 않을 경우 관리형 코드에서 프록시 클래스를 사용하여 검색된 엔터티 레코드를 업데이트하면 MERGE가 사용되고 모든 속성이 업데이트됩니다. 속성의 값이 변경되지 않은 경우에도 마찬가지입니다. 워크플로 또는 플러그 인과 같이 다른 이벤트 파생 기능이 속성이 업데이트되었음을 감지하면 바람직하지 않은 부작용을 일으킬 수도 있습니다. 또한 감사는 속성이 업데이트되었음을 기록합니다.

게다가 엔터티 인스턴스가 검색되는 대신 인스턴스화되면 엔터티에 대한 모든 속성이 MERGE 요청으로 반환됩니다. 코드에서 설정되지 않은 모든 속성은 null이 됩니다. 이러한 null 값은 레코드에 대한 기본 값을 덮어씁니다.

DataServiceContextReadingEntityWritingEntity 이벤트에 대한 이벤트 처리기를 구현하여 이 동작을 완화할 수 있습니다.

이 항목의 내용

ATOM 사용

예를 들어 관리형 코드에서 System.Data.Services.Client 라이브러리를 사용하여 거래처 레코드를 업데이트하는 경우

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>

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

이 항목의 내용

JSON 사용

예를 들어 브라우저에서 XMLHttpRequest 개체를 사용하여 거래처 레코드를 업데이트하는 경우

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

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

레코드 삭제

삭제할 레코드의 URI 참조를 사용하여 X-HTTP-METHOD 헤더가 DELETE로 설정된 POST 요청을 사용합니다.

참고

OData 사양은 성공적인 삭제 작업은 HTTP 상태 코드 200(OK)을 반환해야 함을 나타내지만 Microsoft Dynamics 365 구현은 204(콘텐츠 없음)를 반환합니다.

자세한 내용은 레코드 연결 및 연결 해제을 참조하십시오.

이 항목의 내용

ATOM 사용

예를 들어 관리형 코드에서 System.Data.Services.Client 라이브러리를 사용하여 거래처 레코드를 삭제하는 경우

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>

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

이 항목의 내용

JSON 사용

예를 들어 브라우저에서 XMLHttpRequest 개체를 사용하여 거래처 레코드를 삭제하는 경우

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>

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

이 항목의 내용

HTTP 상태 코드

반환된 HTTP 상태 코드는 OData endpoint Http status codes에서 사용할 수 있습니다.

참고 항목

웹 리소스와 함께 OData 끝점 사용
OData 끝점을 사용하여 추가 데이터 작업 수행
Ajax 및 JScript 웹 리소스와 함께 OData 끝점 사용
OData endpoint Http status codes

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