Mudanças entre as edições de "Exemplo de Leitura de Registro de Pessoa Com PHSYS API"
(8 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 | + | 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 | + | 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 | var | ||
Q: TPHQuery; | Q: TPHQuery; | ||
− | TextJSON:String | + | TextJSON:String; |
− | |||
begin | begin | ||
− | if (ParamByName('IDs'). | + | if not (ParamByName('IDs').IsNull) then |
− | begin | + | begin |
− | + | Q := NewPHQuery; | |
− | try | + | 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 | finally | ||
− | + | Q.Free; | |
− | end; | + | end; |
end; | end; | ||
end; | end; | ||
Linha 60: | Linha 57: | ||
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'''. | + | 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 | + | Para consumir o parâmetro '''IDs''' preenchido no '''Body da Requisição''' é utilizado no método '''ParamByName''', da seguinte maneira: |
ParamByName('IDs').AsString; | 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, dentro do [[Servidor_de_Aplicação | servidor de aplicação]], na página API, | + | 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/ | + | <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: | ||
Linha 79: | Linha 80: | ||
*'''IDs:''' Preenchido com os IDs dos registros que é desejado retornar as informações cadastrais, separados por "''','''" e sendo do tipo string. | *'''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 | + | 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/ | + | <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, | + | 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/ | + | <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:
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.
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: