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:
1 2 3 4 5 |
procedure TForm2.LerAsInformacoesClick(Sender: TObject); begin RESTRequest1.Execute; RESTResponseDataSetAdapter1.Active := True; end; |
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.