Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
Notícia

Usando TRESRequestDataSetAdapter para atualizar dados por meio de uma API de servidor RESTful

using trestrequestdatasetadapter

O RAD Studio 11 viu a introdução do TRESRequestDataSetAdapter, um componente que pode ler dados de um TDataSet e convertê-los em JSON pronto para enviar de volta para uma API RESTful remota. Antes de falar mais sobre como usá-lo, quero recapitular como as URLs/APIs REST funcionam.

APIs REST e VERBOS

As APIs REST geralmente são criadas para usar os diferentes verbos HTML (POST, GET, PUT, PATCH e DELETE) para definir o tipo de solicitação que está sendo feita para um endpoint.
Como exemplo, vamos imaginar que você gerencie uma lista de tarefas em um banco de dados que estão completas ou incompletas. Um URL de API básico como “https://<myURL>/data/tasks/” pode fornecer um endpoint para chamar para trabalhar com os dados de TASK, e os diferentes verbos são usados ​​ao chamar o endpoint para definir o tipo de ação acontecendo. (por exemplo, buscar dados, inserir, atualizar ou excluir dados). Para fazer isso funcionar, certos verbos requerem um valor de ID para identificar os dados com os quais você deseja trabalhar (por exemplo, qual registro atualizar/excluir?), então, na realidade, a URL para determinadas tarefas também teria um valor de ID opcional, por exemplo, “ /data/tasks/{id}”

Para enviar os dados de volta ao servidor usando o TRESRequestDataSetAdapter, primeiro é importante combinar a operação (inserir, atualizar, excluir) com o verbo correto e, em seguida, usar o TRESRequest para executar com os dados JSON formados corretamente, mas também para garantir a endpoint tem o endpoint correto definido.

Usando essa nomenclatura padrão para URLs (acima), mais o TRESRequestDataSetAdapter, é possível empacotar o JSON com pouco código para enviar os dados de volta ao servidor. O TRESRequestDataSetAdapter conecta um TRESRequest e um TDataSet. A propriedade Area define o que está sendo selecionado (por exemplo, All ou Current record) e converte o conjunto de dados no conteúdo JSON que deve ser enviado de volta ao servidor.

Para fazer isso automaticamente, você pode usar os eventos no TDataSet, por exemplo, AfterInsert, AfterPost e BeforeDelete, para pegar as alterações no conjunto de dados e fazer chamadas remotas para manter o servidor sincronizado.

CONTUDO…. e se você tiver problemas de conexão?

Beneficiando-se do Desenvolvimento Nativo para tornar os aplicativos REST mais ricos em recursos.

Um recurso útil do FireDAC (e alguns outros conjuntos de dados, como TClientDataSet) é a opção CachedUpdate. Usando o CachedUpdates, você pode acompanhar as alterações dentro de um conjunto de dados. Isso permite que as alterações sejam armazenadas em cache, salvas localmente e, em seguida, enviadas de volta posteriormente. (ótimo se houver conectividade limitada).

É possível combinar esses ótimos recursos das bibliotecas nativas junto com o TRESRequestDataSetAdapter para salvar as alterações de volta no servidor. Embora isso possa adicionar mais complexidade, especialmente quando você tiver operações de inserção, atualização e exclusão combinadas no mesmo cache (já que elas usam VERBOS diferentes para atualizar o servidor remoto), é possível filtrar um cache de dados para processar cada tipo de atualização em virar.

Para mostrar como fazer isso, criei um exemplo que está disponível via GitHub – Isso inclui uma unidade REST.RESTUpdater com classes de ajuda para gerenciar transporte e postagem de dados em apenas algumas linhas de código! – Saiba mais sobre o exemplo neste post

See What's New in 12.2 Athens See What's New in 12.2 Athens Dev Days of Summer 2-24

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Leave a Reply

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

IN THE ARTICLES