Portal de Vendas: Busca de Dados REST no Protheus com Autenticação e Controle de Tempo5 minutos de leitura

A função getRest foi desenvolvida para realizar requisições HTTP via REST no sistema Protheus, ou em qualquer outro sistema configurável. Utilizando a biblioteca cURL do PHP, ela é flexível o suficiente para autenticar requisições, lidar com parâmetros opcionais e monitorar o tempo de resposta. Abaixo, vamos explorar o funcionamento e propósito de cada parte dessa função.

 

Descrição Geral da Função

A função getRest permite fazer chamadas para URLs REST, retornando o resultado em JSON. É especialmente útil para buscar dados ou executar ações em APIs RESTful, como as expostas pelo sistema Protheus, podendo autenticar e personalizar a requisição conforme necessário.

Estrutura e Parâmetros da Função

A função possui três parâmetros principais:

  1. $url: URL da API REST a ser acessada.
  2. $protheus: Booleano que indica se a requisição é para o sistema Protheus, onde são necessárias configurações específicas de autenticação e cabeçalho.
  3. $options: Array opcional para configurações adicionais de cabeçalho e outras opções, como a possibilidade de retornar o código HTTP da resposta.

Passo a Passo da Função

  1. Início do Cronômetro: A variável $inicio registra o tempo de início da execução da função, permitindo calcular o tempo total ao final.
  2. Configuração do cURL: A função inicializa a instância cURL e define algumas opções básicas:
    • CURLOPT_RETURNTRANSFER: Retorna o resultado da requisição em vez de imprimi-lo.
    • CURLOPT_URL: Define a URL da requisição.
    • CURLOPT_USERAGENT: Define um agente de usuário para a requisição.
  3. Cabeçalhos para Protheus:
    • Se a variável $protheus for verdadeira, a função configura cabeçalhos específicos para acessar a API do Protheus.
    • Um cabeçalho tenantId é adicionado, com o código da empresa configurado em EMPCOD.
    • Se a variável REST_AUTH estiver ativa, é adicionada uma autenticação básica com as credenciais (REST_USER e REST_PASS) codificadas em Base64.
  4. Cabeçalhos Opcionais:
    • Para personalizar a requisição, a função itera sobre o array $options e adiciona cada par chave-valor como um cabeçalho HTTP.
  5. Execução da Requisição:
    • A função executa a requisição e armazena a resposta em JSON na variável $json_results.
    • Ela também verifica se o código HTTP de resposta é necessário ($options['status_code']). Se sim, armazena o código na variável $http_code.
  6. Tratamento da Resposta:
    • Após receber a resposta, a função converte seu encoding para UTF-8 para evitar problemas de caracteres.
    • Se a resposta for um JSON vazio ([{}]), ela é redefinida para uma string vazia.
  7. Cálculo do Tempo de Resposta:
    • A função calcula a duração da requisição subtraindo o tempo final ($fim) do tempo inicial ($inicio), guardando esse tempo em segundos.
  8. Registro de Logs e Sessão:
    • Logs de Sessão: A função registra a URL e o tempo da requisição em uma sessão (REQUESTQUERIES).
    • Logs de Arquivo: Se o LOGFILE estiver ativado, a função registra o tempo da requisição e o status da resposta em um arquivo de log.
  9. Retorno da Função:
    • A função retorna o JSON de resposta. Se $options['status_code'] estiver ativo, retorna um array contendo o código HTTP e o JSON da resposta.

Exemplo de Uso

Essa função é essencial para integrar sistemas que dependem de dados do Protheus ou outras APIs REST. Abaixo está um exemplo de como utilizá-la para buscar dados:

Conclusão

A função getRest é uma ferramenta poderosa para acessar APIs REST, oferecendo autenticação opcional, personalização de cabeçalhos, controle de tempo de resposta e registro em log. Ela é altamente customizável, permitindo o uso tanto para chamadas simples quanto para integrações robustas com o sistema Protheus, simplificando o processo de comunicação entre sistemas e melhorando a eficiência na troca de dados.

Fernando Bueno
Siga na rede

Fernando Bueno

Consultor em FBSOLUTIONS
Sou consultor na área de implantação de sistemas ERP, com experiência na análise e implantação de projetos de sistemas, configurando a estrutura do software, capacitando usuários-chaves, ministrando treinamentos e workshops.

Atuando desde 2005 no mercado de tecnologia, desenvolvendo e implantando e sistemas gerenciais, sistemas e sites web e ecommerce.

Siga-me no Linked In
Fernando Bueno
Siga na rede