Classe TDmxScroller_Form_Rest_Client

Unit

Declaração

type TDmxScroller_Form_Rest_Client = class(TDmxScroller_Form)

Descrição

A class TDmxScroller_Form_Rest_Client é uma extensão da classe TDmxScroller_Form, projetada para integrar operações de requisições HTTP em um formulário usando um cliente REST (TMi_FpHttpClient). Esta classe facilita a manipulação de registros remotos por meio de uma API REST, permitindo operações CRUD e navegação entre os registros de forma eficiente.

Hierarquia

Visão Geral

Métodos

Public constructor Create(aOwner:TComponent); Override;
Public Destructor Destroy; Override;
Public Procedure DoOnNewRecord; reintroduce;
Public Function AddRec:Boolean; Override;
Public function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions) : boolean; override; overload;
Public Function PutRec:Boolean; Override;
Public Function DeleteRec:Boolean; Override;
Public Function FirstRec: Boolean; overload; Override;
Public Function NextRec: Boolean; overload; Override;
Public Function PrevRec: Boolean; overload; Override;
Public Function LastRec: Boolean; overload; Override;
Protected function EventRequest_pDmxFieldRec(aComando: TEn_OnEvent_DmxFieldRec): Boolean;
Protected procedure DoOnEnterField(aField: pDmxFieldRec);
Protected procedure DoOnExitField(aField: pDmxFieldRec);

Propriedades

Published property Mi_FpHttpClient: TMi_FpHttpClient Read _Mi_FpHttpClient write _Mi_FpHttpClient;

Descrição

Métodos

Public constructor Create(aOwner:TComponent); Override;
 
Public Destructor Destroy; Override;
 
Public Procedure DoOnNewRecord; reintroduce;

O método DoOnNewRecord é responsável por criar um novo registro através de uma requisição HTTP GET, utilizando o cliente Mi_FpHttpClient. Caso a requisição seja bem-sucedida, o novo registro é processado e atribuído ao formulário para edição.

  • Fluxo de Execução

    1. Envia uma requisição HTTP do tipo GET com o comando CmNewRecord.

    2. Se a resposta for recebida (Response for atribuído), chama o método herdado DoOnNewRecord e armazena a resposta em JSONObject.

    3. Libera a memória de Response no final, se alocado.

  • Parâmetros Locais

    • Response: TJSONObject: -Objeto JSON que contém a resposta da requisição HTTP.

    • Exceções

      • Caso o envio da requisição ou o processamento do JSON falhe, uma exceção pode ser levantada pelo método SendRequest ou pela manipulação de objetos.

    • Ver Também

      • Mi_FpHttpClient.SendRequest

      • inherited DoOnNewRecord

    • Exemplo de uso

      
      var
        RestClient: TDmxScroller_Form_Rest_Client;
      begin
        // Inicializando o cliente REST
        RestClient := TDmxScroller_Form_Rest_Client.Create(nil);
        try
          // Chama o método para criar um novo registro
          RestClient.DoOnNewRecord;
      
          // Agora o JSON com o novo registro estará disponível para edição
          // Processar o JSONObject conforme necessário
          if Assigned(RestClient.JSONObject) then
            ShowMessage('Novo registro criado com sucesso.');
      
        finally
          RestClient.Free;
        end;
      end;

Public Function AddRec:Boolean; Override;

O método AddRec adiciona o buffer DataSource.dataSet no arquivo.

  • Descrição

    • O método AddRec tem a função de adicionar um novo registro à base de dados remota, utilizando a funcionalidade REST do cliente HTTP. Se um registro estiver selecionado e o estado for de adição (Appending), ele envia os dados do registro para o servidor via requisição HTTP POST. Após a confirmação da resposta, o método atualiza a chave primária do registro e realiza uma busca pelo novo registro, utilizando as chaves atualizadas.

  • Parâmetros Locais

    • Params: TJSONObject

      • Objeto JSON contendo os parâmetros da requisição.

    • KeyFields: string

      • Campos-chave do registro.

    • KeyValues: Variant

      • Valores dos campos-chave.

    • Response: TJSONObject

      • Objeto JSON contendo a resposta da requisição HTTP.

  • Fluxo de Execução

    1. Verifica se há um registro selecionado com RecordSelected.

    2. Caso o registro esteja sendo adicionado (Appending), realiza a adição chamando Inherited AddRec.

    3. Envia a requisição HTTP POST para o servidor com a ação CmUpdateRecord e os dados do registro.

    4. Se a resposta tiver um código diferente de 200 ou 201, o método falha e chama DoOnNewRecord.

    5. Ao finalizar, verifica se houve uma resposta do servidor e processa os campos-chave atualizados, chamando ParseServerResponse.

    6. Caso o registro seja adicionado com sucesso, gera os parâmetros de busca e envia a requisição HTTP GET para localizar o registro recém-adicionado.

    7. O resultado da busca é armazenado em JSONObject e a atualização do registro é concluída com Inherited PutRec.

  • Exceções

    • TException: Lançada caso nenhum registro tenha sido selecionado.

  • Ver Também

    • Mi_FpHttpClient.SendRequest: Método utilizado para enviar requisições HTTP.

    • ParseServerResponse: Método responsável por processar a resposta do servidor e atualizar os campos-chave.

    • Inherited AddRec: Método herdado responsável por adicionar um registro localmente.

    • Inherited UpdateRec: Método herdado responsável por atualizar um registro localmente.

Public function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions) : boolean; override; overload;

O método Locate Localiza o registro no servidor e adicone no BufDataSet local caso exista.

  • Descrição

    • O método Locate tenta localizar um registro com base nos parâmetros fornecidos. Ele envia uma requisição HTTP usando a função Mi_FpHttpClient.SendRequest e manipula a resposta JSON para localizar ou criar um novo registro.

  • Parâmetros

    • KeyFields: string Nome(s) do(s) campo(s) utilizado(s) para localizar o registro.

    • KeyValues: Variant

      • Valor(es) correspondente(s) ao(s) campo(s) especificado(s) em KeyFields.

    • Options: TLocateOptions

      • Conjunto de opções de localização (exemplo: loCaseInsensitive, loPartialKey).

  • Retorno

    • boolean:

      • true

        • Se o registro for localizado ou criado com sucesso.

      • false

        • Em caso de erro ou se o registro não for encontrado.

  • Exceções

    • O método trata exceções internamente e retorna false em caso de falha.

  • Detalhes de Implementação

    1. Converte os parâmetros KeyFields, KeyValues e Options para um JSON utilizando o método LocateParamsToJson.

    2. Envia uma requisição HTTP do tipo GET para localizar o registro correspondente, utilizando o endpoint 'Cmlocate'.

    3. Se a resposta HTTP contém dados:

      • O método tenta localizar o registro chamando o método inherited Locate.

      • Se o registro for localizado, a resposta JSON é atribuída à propriedade JSONObject.

      • Caso o registro não seja localizado, o método chama inherited DoOnNewRecord e atribui o JSON da resposta ao JSONObject, permitindo a criação de um novo registro.

    4. Atualiza o registro chamando inherited UpdateRec.

    5. Libera os objetos Params e Response para evitar vazamento de memória.

  • Exemplo de Uso

    procedure teste;
      var
        Found: boolean;
    begin
      Found := MyDmxScrollerFormRestClient.Locate('ID', 123, []);
      if Found
      then ShowMessage('Registro localizado com sucesso!')
      else ShowMessage('Registro não encontrado.');
    end;

Public Function PutRec:Boolean; Override;

O método PutRec tem a função de atualizar um registro existente na base de dados remota usando uma requisição HTTP PUT. Caso o registro esteja selecionado, ele utiliza as chaves do registro para localizar e atualizar o registro no servidor. Se as chaves não estiverem disponíveis, o processo de atualização é interrompido e uma exceção é lançada.

  • Parâmetros Locais

    • Response: TJSONObject

      • Armazena a resposta da requisição HTTP.

    • Params: TJSONObject

      • Contém os parâmetros para localizar o registro no servidor.

    • wJSONObject: TJSONObject

      • Armazena uma cópia do objeto JSON atual.

    • KeyFields: string

      • Campos-chave utilizados para identificar o registro.

    • KeyValues: Variant

      • Valores dos campos-chave do registro.

  • Fluxo de Execução

    1. Verifica se um registro foi selecionado com RecordSelected.

    2. Se o registro estiver selecionado, chama Inherited PutRec para realizar a atualização local.

    3. Obtém os campos-chave do registro através do método getFieldsKeys.

    4. Se as chaves estiverem presentes, monta os parâmetros de localização com LocateParamsToJson e envia uma requisição HTTP PUT com a ação CmUpdateRecord.

    5. Verifica o código de status da resposta. Se não for 200, restaura o valor original de JSONObject e interrompe a operação.

    6. Se não houver campos-chave, uma exceção é lançada informando que não é possível atualizar o registro no servidor sem chaves de pesquisa.

    7. Caso nenhum registro tenha sido selecionado, lança uma exceção informando que o registro não foi selecionado.

  • Exceções

    • TException:

      • Lançada nos seguintes cenários:

        • Se não houver registro selecionado.

        • Se não houver campos-chave disponíveis para realizar a atualização no servidor.

  • Ver Também

    • Mi_FpHttpClient.SendRequest: Método utilizado para enviar requisições HTTP.

    • LocateParamsToJson: Método responsável por criar os parâmetros de localização do registro.

    • Inherited PutRec: Método herdado responsável por atualizar o registro localmente.

Public Function DeleteRec:Boolean; Override;

O método DeleteRec tem como objetivo excluir um registro da base de dados remota através de uma requisição HTTP. Ele identifica o registro a ser excluído com base em suas chaves primárias, monta os parâmetros da requisição e envia uma operação HTTP DELETE ao servidor. Se não houver um registro selecionado ou se as chaves não estiverem disponíveis, o método gera uma exceção.

  • Parâmetros Locais

    • Response: TJSONObject

      • Objeto que armazena a resposta da requisição HTTP.

    • Params: TJSONObject

      • Objeto JSON contendo os parâmetros para localizar o registro a ser excluído.

    • KeyFields: string

      • Campos-chave do registro.

    • KeyValues: Variant

      • Valores dos campos-chave do registro.

  • Fluxo de Execução

    1. Verifica se existe um registro selecionado usando RecordSelected.

    2. Obtém os campos-chave do registro com o método getFieldsKeys.

    3. Se as chaves forem encontradas, monta os parâmetros da requisição com LocateParamsToJson e envia uma solicitação HTTP PUT com a ação CmDeleteRecord.

    4. Verifica o código de resposta do servidor:

      • Sucesso se o código for 200 (OK) ou 204 (No Content).

      • Se o código for diferente, o método define Result como False.

    5. Se não houver campos-chave disponíveis, o método lança uma exceção, impedindo a exclusão do registro no servidor.

    6. Caso nenhum registro tenha sido selecionado, uma exceção é lançada informando que não há registro selecionado para exclusão.

  • Exceções

    • TException: Lançada nas seguintes situações:

      • Se nenhum registro estiver selecionado.

      • Se os campos-chave não estiverem disponíveis, impedindo a exclusão do registro no servidor.

  • Ver Também

    • Mi_FpHttpClient.SendRequest: Método responsável por enviar a requisição HTTP para excluir o registro.

    • LocateParamsToJson: Método que cria os parâmetros para localizar o registro no servidor.

    • getFieldsKeys: Método que obtém os campos-chave de um registro.

Public Function FirstRec: Boolean; overload; Override;
 
Public Function NextRec: Boolean; overload; Override;
 
Public Function PrevRec: Boolean; overload; Override;
 
Public Function LastRec: Boolean; overload; Override;
 
Protected function EventRequest_pDmxFieldRec(aComando: TEn_OnEvent_DmxFieldRec): Boolean;
 
Protected procedure DoOnEnterField(aField: pDmxFieldRec);
 
Protected procedure DoOnExitField(aField: pDmxFieldRec);
 

Propriedades

Published property Mi_FpHttpClient: TMi_FpHttpClient Read _Mi_FpHttpClient write _Mi_FpHttpClient;

A propiedade Mi_FpHttpClient usanda para fazer requisições http ao servidor

  • EXEMPLO

    
    
    


Gerado por PasDoc 0.16.0.