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

 
(9 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
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 um cliente no ERP. Com a [[PHSYS_API | PHSYS API]], podemos consumir essas informações de forma fácil e eficiente.
+
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 | 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 chamado '''C_LEITURAPESSOA''' com e inserido o seguinte comportamento desenvolvido:
+
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_LEITURAPESSOA;
+
  procedure C_PHGetPessoasByIDs;
  var  
+
var  
  Q: TPHQuery;
+
  Q: TPHQuery;
  ParamList: TStringList;
+
  TextJSON:String;                                                                
   Index:Integer;                                               
+
begin    
begin
+
  if not (ParamByName('IDs').IsNull) then               
  Q := NewPHQuery;
+
  begin  
  try
+
    Q := NewPHQuery;
      { Consulta de dados através de comandos SQL com base no ID que será preenchido pelo parâmetro de ID da requisição }
+
    try
       Q.Add('SELECT A.NOME, '+
+
       Q.Add('SELECT A.ID, '+                 
 +
            '      A.NOME, '+
 
             '      A.TELEFONE, '+
 
             '      A.TELEFONE, '+
            '      A.EMAIL, '+
 
 
             '      B.NOME AS ESTADO, '+
 
             '      B.NOME AS ESTADO, '+
 
             '      C.NOME AS MUNICIPIO '+                                         
 
             '      C.NOME AS MUNICIPIO '+                                         
Linha 20: Linha 20:
 
             'LEFT JOIN ESTADOS    B ON B.ID = A.ESTADO '+
 
             'LEFT JOIN ESTADOS    B ON B.ID = A.ESTADO '+
 
             'LEFT JOIN MUNICIPIOS C ON C.ID = A.MUNICIPIO '+                                                                                                                                           
 
             'LEFT JOIN MUNICIPIOS C ON C.ID = A.MUNICIPIO '+                                                                                                                                           
             'WHERE A.ID = :FID');
+
             'WHERE A.ID IN ('+ ParamByName('IDs').AsString +')');
           
+
                   
      Q.ParamByName('FID').AsLargeInt := ParamByName('ID').AsLargeInt;                                                                                        
 
 
       Q.Open;
 
       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;
 
    
 
    
       ParamList := TStringList.Create;
+
       TextJSON := '"Pessoas" :[' + TextJSON + '],';
       try
+
        ParamList.Add('NOME');
+
       TextJSON := TextJSON + '"Quantidade" : "'+ IntToStr(Q.RecordCount) + '"';
        ParamList.Add('TELEFONE');
+
        ParamList.Add('EMAIL');
+
      TextJSON := '{'+ TextJSON + '}';                                                                                  
        ParamList.Add('ESTADO');
+
                                                                       
        ParamList.Add('MUNICIPIO');
+
      ParamByName('Result').AsString := TextJSON;                    
 +
                                             
 +
    finally
 +
      Q.Free;   
 +
    end;
 +
  end;      
 +
end;
 +
 +
begin
 
    
 
    
        Index := 0;
 
     
 
        while Index < ParamList.Count do
 
        begin
 
          { Quando utilizado o ParambyName será retornado na requisição o parâmetro conforme atribuição designada. }                                               
 
          ParamByName(ParamList[Index]).AsString := Q.FieldByName(ParamList[Index]).AsString;
 
          Inc(Index);
 
        end;                                                                                     
 
   
 
      finally
 
        ParamList.Free;
 
      end;                 
 
  finally
 
    Q.Free;                                   
 
  end;       
 
end;
 
       
 
begin
 
             
 
 
  end.
 
  end.
  
Neste script existe o procedimento '''C_LEITURAPESSOA''' que realiza a consulta das informações cadastrais com base no '''ID''' que será preenchido pelo parâmetro '''ID''' do '''Body da Requisição'''.  
+
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;
  
Para consumir o parâmetro de ID preenchido no '''Body da Requisição''' é utilizado no método '''ParamByName''', da seguinte maneira:
+
Ao final do script, foi atribuido o parâmetro Result da seguinte maneira:
  
  ParamByName('ID').AsLargeInt;  
+
  ParamByName('Result').AsString := TextJSON;
  
Para cada um dos campos retornados pela consulta é atribuído o '''ParamByName''' designando o nome do parâmetro e seu respectivo valor, desta forma, quando executado pela requisição, estes parâmetros serão retornados como resposta.  
+
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, dentro do [[Servidor_de_Aplicação | servidor de aplicação]], na página API, criamos a chave de acesso '''GETPESSOA''' 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:
  
<img src="https://wiki.phsys.com.br/images/WIKI/GETPESSOA_CHAVEACESSO.png" alt="Chave Acesso API GETPessoa" style="width:700px">
+
<img src="https://wiki.phsys.com.br/images/WIKI/PHGETPESSOASBYIDS_CHAVEACESSO.png" alt="Chave Acesso API GETPessoa" style="width:700px">
  
Para execução do script específico é necessário que seja estruturado o '''Body da Requisição''' conforme padrão PHSYS, contendo a classe  
+
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:
 
'''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.
 
*'''PHSProcedimento:''' Preenchido com o nome do procedimento do script que será executado.
 
*'''PHSScriptNome:''' Preenchido com o nome do script que será executado.
 
*'''PHSScriptNome:''' Preenchido com o nome do script que será executado.
*'''ID:''' Preenchido com o ID do registro que é desejado retornar as informações cadastrais.
+
*'''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 uma requisição para a chave de acesso, as informações do cliente são retornadas de acordo com o ID passado por parâmetro através do '''Body da Requisição'''.
+
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'''.
  
<img src="https://wiki.phsys.com.br/images/WIKI/GETPESSOA_BODY.png" alt="Chave Acesso API GETPessoa" style="width:900px">
+
<img src="https://wiki.phsys.com.br/images/WIKI/PHGETPESSOASBYIDS_BODY.png" alt="Chave Acesso API GETPessoa" style="width:900px">
  
Ao executar a requisição, a resposta no '''Body da Requisição''' conterá as informações solicitadas, como no exemplo abaixo:
+
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:
 
   
 
   
<img src="https://wiki.phsys.com.br/images/WIKI/GETPESSOA_RESPONSE.png" alt="Chave Acesso API GETPessoa" style="width:900px">
+
<img src="https://wiki.phsys.com.br/images/WIKI/PHGETPESSOASBYIDS_RESPONSE_2.png" alt="Chave Acesso API GETPessoa" style="width:900px">

Edição atual tal como às 14h44min 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;                                                                 
begin    
 if not (ParamByName('IDs').IsNull) then                 
 begin    
   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 ('+ ParamByName('IDs').AsString +')');
                    
     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) + '"';

     TextJSON := '{'+ TextJSON + '}';                                                                                    
                                                                        
     ParamByName('Result').AsString := TextJSON;                     
                                              
   finally
     Q.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