Mudanças entre as edições de "Exemplo de Leitura de Registro de Pessoa Com PHSYS API"

Linha 35: Linha 35:
 
   
 
   
 
           TextJSON := TextJSON + '{ ' +     
 
           TextJSON := TextJSON + '{ ' +     
                          'ID : '+          Q.FieldByName('ID').AsString + ',' +                                                                                                                                   
+
            '"ID" : "'+          Q.FieldByName('ID').AsString + '",' +                                                                                                                                   
                          'Nome : '+        Q.FieldByName('NOME').AsString + ',' +                         
+
            '"Nome" : "'+        Q.FieldByName('NOME').AsString + '",' +                         
                          'Telefone : '+    Q.FieldByName('TELEFONE').AsString + ',' +
+
            '"Telefone" : "'+    Q.FieldByName('TELEFONE').AsString + '",' +
                          'Estado : '+      Q.FieldByName('ESTADO').AsString + ','  +
+
            '"Estado" : "'+      Q.FieldByName('ESTADO').AsString + '",'  +
                          'Municipio : '+  Q.FieldByName('MUNICIPIO').AsString +  
+
            '"Municipio" : "'+  Q.FieldByName('MUNICIPIO').AsString + '"'+         
                    '}';                                                                     
+
              '}';                                                                     
 
           Q.Next                                                         
 
           Q.Next                                                         
 
         end;
 
         end;
         
+
 
         ParamByName('Result').AsString := TextJSON;
+
         TextJSON := '"Pessoas" :[' + TextJSON + '],';
         ParamByName('ResultCount').AsInteger := Q.RecordCount;                        
+
 +
        TextJSON := TextJSON + '"Quantidade" : "'+ IntToStr(Q.RecordCount) + '"';                                                                                  
 +
                                                                       
 +
         ParamByName('Result').AsString := TextJSON;                    
 
                                                
 
                                                
      finally
+
      finally
        Q.Free;                                     
+
        Q.Free;                                     
 
       end;             
 
       end;             
 
     finally
 
     finally
Linha 60: Linha 63:
 
  end.
 
  end.
  
Neste script existe o procedimento '''C_PHGetPessoasByIDs''' que realiza a consulta das informações cadastrais com base nos '''IDs''' que são preenchidos pelo parâmetro '''IDs''' do '''Body da Requisição''' e realiza a estruturação de uma string em formato de JSON que contém as respectivas '''chaves''' e '''valores''' com base no '''ID''' da pessoa.  
+
Neste script existe o procedimento '''C_PHGetPessoasByIDs''' que realiza a consulta das informações cadastrais com base nos '''IDs''' que são preenchidos pelo parâmetro '''IDs''' do '''Body da Requisição''' e realiza a estruturação de uma string em formato de JSON.
  
 
Para consumir o parâmetro '''IDs''' preenchido no '''Body da Requisição''' é utilizado no método '''ParamByName''', da seguinte maneira:
 
Para consumir o parâmetro '''IDs''' preenchido no '''Body da Requisição''' é utilizado no método '''ParamByName''', da seguinte maneira:
Linha 66: Linha 69:
 
  ParamByName('IDs').AsString;  
 
  ParamByName('IDs').AsString;  
  
Ao final do script, foram atribuidos dois parâmetros de retorno, sendo eles:
+
Ao final do script, foi atribuido o parâmetro Result da seguinte maneira:
  
  ParamByName('Result').AsString := TextJSON;
+
ParamByName('Result').AsString := TextJSON;
  ParamByName('ResultCount').AsInteger := Q.RecordCount; 
 
  
Com estes dois parâmetros atribuidos, quando realizada a requisição, serão retornados dois parâmetros no '''Body da Requisição''', o parâmetro '''Result''' contendo a string estruturada em formato JSON com as informações das pessoas consultadas através dos '''IDs''' e também será retornado o parâmetro '''ResultCount''' do tipo inteiro, que retornará a quantidade de pessoas que foram realizadas a consulta e retornadas pelo '''Result'''.
+
O parâmetro '''Result''' é utilizado para definir o retorno da requisição, quando realizada a requisição através da API, será retornado apenas o conteúdo do parâmetro '''Result''', neste caso, conterá a string estruturada em formato JSON através do atributo '''Pessoas''' com as informações dos registros consultados através dos '''IDs''' juntamente com o atributo '''Quantidade''' ao final, que retornará a quantidade de registros retornados pela consulta.
  
 
Em seguida, para estruturação da requisição, é necessário que dentro do [[Servidor_de_Aplicação | servidor de aplicação]], na página API, seja criada a '''chave de acesso''', na qual, denominamos '''PHGetPessoasByIDs''' conforme a imagem abaixo:
 
Em seguida, para estruturação da requisição, é necessário que dentro do [[Servidor_de_Aplicação | servidor de aplicação]], na página API, seja criada a '''chave de acesso''', na qual, denominamos '''PHGetPessoasByIDs''' conforme a imagem abaixo:

Edição das 10h40min de 28 de março de 2024

Com a API é possível acessar diversas funcionalidades, incluindo a consulta de registros na base de dados. Para ilustrar, vamos considerar um cenário onde precisamos obter informações de clientes no ERP. Com a PHSYS API, podemos consumir essas informações de forma fácil e eficiente.

Primeiramente, criamos um script específico dentro do ERP através do módulo desenvolvimento, no qual, foi nomeado C_PHGetPessoasByIDs com e inserido o seguinte comportamento desenvolvido:

procedure C_PHGetPessoasByIDs;
var 
 Q: TPHQuery;
 TextJSON:String;
 IDList:TStringList;                                                                 
begin    
 if (ParamByName('IDs').AsString <>  ) then                 
 begin
   IDList := TStringList.Create;
   try                  
     IDList.CommaText := ParamByName('IDs').AsString;              
   
     Q := NewPHQuery;
     try
       Q.Add('SELECT A.ID, '+                  
             '       A.NOME, '+
             '       A.TELEFONE, '+
             '       B.NOME AS ESTADO, '+
             '       C.NOME AS MUNICIPIO '+                                        
             'FROM PESSOAS A '+
             'LEFT JOIN ESTADOS    B ON B.ID = A.ESTADO '+
             'LEFT JOIN MUNICIPIOS C ON C.ID = A.MUNICIPIO '+                                                                                                                                          
             'WHERE A.ID IN ('+ IDList.CommaText +')');
                    
       Q.Open;

       while not Q.Eof do    
       begin
         if TextJSON <>  then
           TextJSON := TextJSON + ', ';

         TextJSON := TextJSON + '{ ' +     
            '"ID" : "'+          Q.FieldByName('ID').AsString + '",' +                                                                                                                                  
            '"Nome" : "'+        Q.FieldByName('NOME').AsString + '",' +                        
            '"Telefone" : "'+    Q.FieldByName('TELEFONE').AsString + '",' +
            '"Estado" : "'+      Q.FieldByName('ESTADO').AsString + '",'   +
            '"Municipio" : "'+   Q.FieldByName('MUNICIPIO').AsString + '"'+          
             '}';                                                                    
         Q.Next                                                         
       end;
 
       TextJSON := '"Pessoas" :[' + TextJSON + '],';

       TextJSON := TextJSON + '"Quantidade" : "'+ IntToStr(Q.RecordCount) + '"';                                                                                    
                                                                        
       ParamByName('Result').AsString := TextJSON;                     
                                              
     finally
       Q.Free;                                    
      end;            
   finally
     IDList.Free;                      
   end;      
 end;        
end;

begin
 
end.

Neste script existe o procedimento C_PHGetPessoasByIDs que realiza a consulta das informações cadastrais com base nos IDs que são preenchidos pelo parâmetro IDs do Body da Requisição e realiza a estruturação de uma string em formato de JSON.

Para consumir o parâmetro IDs preenchido no Body da Requisição é utilizado no método ParamByName, da seguinte maneira:

ParamByName('IDs').AsString; 

Ao final do script, foi atribuido o parâmetro Result da seguinte maneira:

ParamByName('Result').AsString := TextJSON;

O parâmetro Result é utilizado para definir o retorno da requisição, quando realizada a requisição através da API, será retornado apenas o conteúdo do parâmetro Result, neste caso, conterá a string estruturada em formato JSON através do atributo Pessoas com as informações dos registros consultados através dos IDs juntamente com o atributo Quantidade ao final, que retornará a quantidade de registros retornados pela consulta.

Em seguida, para estruturação da requisição, é necessário que dentro do servidor de aplicação, na página API, seja criada a chave de acesso, na qual, denominamos PHGetPessoasByIDs conforme a imagem abaixo:

Chave Acesso API GETPessoa

Para execução do script específico através da requisição é necessário que seja estruturado o Body da Requisição conforme padrão PHSYS, contendo a classe TPHSProcScript e o procedimento Executar. É necessário que nos parâmetros seja incluso os seguintes parâmetros:

  • PHSProcedimento: Preenchido com o nome do procedimento do script que será executado.
  • PHSScriptNome: Preenchido com o nome do script que será executado.
  • IDs: Preenchido com os IDs dos registros que é desejado retornar as informações cadastrais, separados por "," e sendo do tipo string.

Com essa configuração e o desenvolvimento do script de leitura específico, ao realizar a requisição para a chave de acesso, as informações do cliente são retornadas de acordo com os IDs passado por parâmetro através do Body da Requisição.

Chave Acesso API GETPessoa

Ao executar a requisição, a resposta no Body da Requisição conterá as informações solicitadas, nas quais, podem ser manipuladas da maneira que for necessário, pode ser observado o retorno no exemplo abaixo:

Chave Acesso API GETPessoa