Executar operações de dados básicas usando o ponto de extremidade OData

 

Publicado: novembro de 2016

Aplicável a: Dynamics CRM 2015

Há uma variedade de tecnologias ou bibliotecas que você pode usar para executar as solicitações HTTP para executar operações de dados usando o ponto de extremidade OData com o Atualização do Microsoft Dynamics CRM 2015 e Microsoft Dynamics CRM Online 2015. Este tópico descreve o formato das solicitações HTTP de nível baixo. Independentemente da biblioteca ou tecnologia usada, com uma ferramenta de proxy de depuração da Web como o Fiddler, é possível verificar o tráfego HTTP e comparar os resultados vistos com os requisitos do ponto de extremidade OData. Este artigo apresenta exemplos de Solicitações e Respostas HTTP capturadas usando o Fiddler. Algum conteúdo nestes exemplos foram editados para brevidade e <placeholders> estão incluídos onde o conteúdo varia baseado em variáveis ambientais.

Para obter mais informações sobre os aplicativos que usam uma tecnologia específica, consulte: Usar o ponto de extremidade do OData com os recursos da Web JScript e Ajax

Neste tópico

Criando registros

  • Usando o ATOM

  • Usando o JSON

Recuperando registros

  • Usando o ATOM

  • Usando o JSON

Atualizando registros

  • Atualizar usando PUT

  • Atualizar usando MERGE

    • Usando o ATOM

    • Usando o JSON

Excluindo registros

  • Usando o ATOM

  • Usando o JSON

Código de status HTTP

Criando registros

Novos registros ou entradas são criados executando uma solicitação HTTP POST na URI da coleção onde a entrada deve ser criada. A solicitação POST inclui uma nova entrada no seu corpo usando os formatos ATOM ou JSON.

O servidor atribui valores padrão para todas as propriedades não especificadas na solicitação e retorna o resultado com um cabeçalho “Local” que contém a URL do registro criado. O elemento do título de entrada reflete o atributo principal da entidade. Por exemplo, a entidade account o atributo name é o atributo principal. O código de status HTTP 201 indica que o registro foi criado com êxito.

Para obter mais informações sobre uma forma alternativa de criar novos registros no contexto de um registro relacionado, consulte Usando a inserção profunda.

Usando o ATOM

Por exemplo, quando um novo registro do account é criado usando a Biblioteca System.Data.Services.Client no código gerenciado

Solicitação 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>

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

Neste tópico

Usando o JSON

Por exemplo, quando um novo registro de conta for criado usando o objeto XMLHttpRequest no navegador.

Solicitação 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"}

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

Neste tópico

Recuperando registros

O HTTP GET é usado quando você estiver recuperando registros. Quando um identificador exclusivo para um registro específico é fornecido, somente esse registro será recuperado. Caso contrário, as opções de consulta do sistema que são definidas serão aplicadas e até 50 registros são recuperados que correspondem a qualquer filtro de opção de consulta do sistema.

Neste tópico

Usando o ATOM

Por exemplo, quando estiver recuperando um único registro de conta usando a biblioteca System.Data.Services.Client no código gerenciado.

Solicitação 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>

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

Neste tópico

Usando o JSON

Por exemplo, quando você estiver recuperando um registro de conta usando o objeto XMLHttpRequest no navegador.

Solicitação 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>

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

Neste tópico

Atualizando registros

No OData, você pode usar o método PUT ou o método MERGE para atualizar registros.MERGE é usado para evitar sobrecarregar o significado de PUT.

Uma resposta de atualização bem-sucedida contém o código de status HTTP 204 e não retorna conteúdo.

Observação

Para definir valores de tipo complexo do Microsoft Dynamics 365 como nulos, defina as propriedades do tipo complexo como nulas. Para obter mais informações, consulte Definindo tipos complexos como null.

Observação

Algumas bibliotecas não podem incluir o corpo da solicitação ao enviar uma solicitação PUT ou MERGE para o servidor. Como solução alternativa, o OData suporta Método de túnel através do post usando o operador HTTP POST. Para usar o método de túnel, envie uma operação HTTP POST e defina o cabeçalho X-HTTP-Method para a operação HTTP que deseja executar. Por exemplo, para enviar uma solicitação MERGE, a operação HTTP devem ser POST e o cabeçalho HTTP X-HTTP-Method deve ser MERGE.

Atualizar usando PUT

Importante

Atualizar registros usando PUT substitui o registro existente com os dados fornecidos. Todos os valores de propriedade no registro têm valores fornecidos na solicitação ou são definidos como os valores padrão se não forem incluídos na solicitação. Links não são substituídos.

Use PUT ao atualizar propriedades individuais. Para obter mais informações, consulte Atualizando propriedades individuais

Atualizar usando MERGE

A lógica de atualização comum no Microsoft Dynamics 365 corresponde ao comportamento geralmente definido usando MERGE. Os valores de propriedade incluídos na solicitação são aplicados apenas nestas propriedades. Outros dados de propriedade não são alterados.

Importante

A menos que você execute etapas para atenuar esse comportamento, ao usar as classes de proxy no código gerenciado para atualizar os registros de entidade recuperados, MERGE é usado e todas as propriedades são atualizadas. Isso é verdadeiro mesmo se o valor das propriedades não é alterado. Isso pode causar efeitos colaterais indesejados quando outros recursos orientados para o evento, como plug-ins ou fluxos de trabalho, detectam que a propriedade foi atualizada. Além disso, a auditoria registrará que a propriedade foi atualizada.

Além disso, se uma instância de entidade for instanciada em vez de recuperada, todas as propriedades da entidade são retornadas com a solicitação MERGE. Todas as propriedades que não foram definidas no código serão nulas. Esses valores nulos substituirão os valores existentes do registro.

É possível atenuar esse comportamento implementando um manipulador de eventos para os eventos DataServiceContextReadingEntity e WritingEntity.

Neste tópico

Usando o ATOM

Por exemplo, ao atualizar um registro de conta usando a biblioteca System.Data.Services.Client no código gerenciado:

Solicitação 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>

Resposta 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

Neste tópico

Usando o JSON

Por exemplo, quando você estiver atualizando um registro de conta usando o objeto XMLHttpRequest no navegador.

Solicitação 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"}

Resposta 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

Excluindo registros

Use uma solicitação POST com o cabeçalho X-HTTP-METHOD definido como DELETE com uma referência de URI para o registro a ser excluído.

Observação

Embora a especificação OData indique que a operação de exclusão bem-sucedido deve retornar um código de status HTTP 200 (OK), a implementação do Microsoft Dynamics 365 retorna 204 (sem conteúdo).

Para obter mais informações, consulte Associando e dissociando registros.

Neste tópico

Usando o ATOM

Por exemplo, ao excluir um registro de conta usando a biblioteca System.Data.Services.Client no código gerenciado.

Solicitação 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>

Resposta 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

Neste tópico

Usando o JSON

Por exemplo, quando ao excluir um registro de conta usando o objeto XMLHttpRequest no navegador.

Solicitação 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>

Resposta 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

Neste tópico

Código de status HTTP

Os detalhes sobre os códigos de status HTTP retornados estão disponíveis no OData endpoint Http status codes.

Confira Também

Usar o ponto de extremidade do OData com os recursos da Web
Executar operações de dados adicionais usando o ponto de extremidade OData
Usar o ponto de extremidade do OData com os recursos da Web JScript e Ajax
OData endpoint Http status codes

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais