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