Utilizando dados JSON em formato TDataSet com TRESTResponseDataSetAdapter

A cada dia que passa estamos tendo mais desenvolvimento de webservices RESTFul, utilizando-se JSON como conteúdo de integração. Para os desenvolvedores Delphi, o que isso significa? Com certeza não significa problema algum.

Acostumados como estamos a trabalhar com datasets, é possível facilmente conectar sua aplicação a um servidor REST e obter as informações em formato tabular, como estivesse abrindo uma query em uma consulta de banco de dados, e simplesmente fazer o uso das informações a partir daí. Parece simples, não? E realmente é.

Vamos utilizar para nossos exemplos, um fake REST server, com informações fictícias de usuários: https://jsonplaceholder.typicode.com/users

Como uma das facilidades de uma ferramenta RAD, o RAD Studio já prepara todo o ambiente com as configurações necessárias para que isso aconteça. No  menu Tools->REST Debugger, coloque o endereço acima em URL e depois click em Send Request. Com isso, todas as informações necessárias foram obtidas do servidor. Click na aba Tabular Data e veja as informações já em formato tabular.

Veja agora que existe um botão com o nome de Copy Components, feito justamente para gerar em memória todos os componentes necessários para a sua aplicação realizar a mesma consulta. Ao clicar, você receberá a mensagem:

The following components have been copied to the clipboard: TRESTClient, TRESTRequest, TRESTResponse, TRESTResponseDataSetAdapter, TFDMemTable

Isso apenas está indicando que foi gerado na memória 5 componentes:

  • TRESTClient
  • TRESTRequest
  • TRESTResponse
  • TRESTResponseDataSetAdapter
  • TFDMemTable

Cole o conteúdo da memória (CTRL + V) em um formulário ou data módulo e veja que todos os componentes vão ser colados.

O três primeiros são os componentes de comunicação com o servidor. O importante quando utilizamos o REST Debugger é que todos esses componentes já vem configurados para o acesso ao webservice, inclusive suas propriedades ContentType, Acept, AceptCharset, URL, etc. Assim, você não precisa se preocupar mais com isso.

O grande responsável pela conversão do JSON para um TDataSet é o TRESTResponseDataSetAdapter, que também já vem todo configurado.

Adicione um TDataSource e ligue-o com a tabela temporária (TFDMemTable). Adicione também um TDBGrid e ligue-o com seu novo datasource. Adicione ainda um botão para o disparo do evento de leitura das informações.

A dica aqui fica na execução da requisição para o webservice, e a abertura do adaptador para obtenção das informações. No evento OnClick do botão, faça:

Execute sua aplicação e veja o resultado ao clicar no botão.

Feito isso, você pode facilmente utilizar as informações do webservice lendo-as através da tabela temporária (TFDMemTable).

Muito legal, não é?

A tabela temporária poderia ser outro dataset, como um TClientDataSet, por exemplo, e não necessariamente o TFDMemTable.

Consegue visualizar o poder que isso traz aos desenvolvedores? O Delphi traz um ótimo recurso de produtividade e adaptabilidade. Sirva-se dele.