Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice

1 - Visão Geral

Para utilização dos Apps é necessário que o REST do Protheus esteja habilitado e configurado corretamente, nas com a autenticação habilitada. Nas seções abaixo temos alguns exemplos de configuração e validação.

2 - Configuração do REST

Para fazer a configuração do Rest é recomendado que seja criada uma cópia do appserver do Protheus para que ele rode em instâncias separadas conforme no exemplo abaixo:

Os arquivos podem ser copiados da pasta appserver, sendo necessário alterar apenas o arquivo appserver.ini da pasta onde ficará o REST.

Informações
titleImportante

Caso você utiliza mais de um tipo de webservice, para correto funcionamento das integrações, o appserver REST e SOAP não devem rodar na mesma instância do serviço, nem estar expostos na mesma porta.


3 - Configuração do appserver.ini:

O arquivo appserver.ini deve conter as chaves abaixo:

Bloco de código
languagesass
themeMidnight
titleConfiguração REST sem os comentários
linenumberstrue
[General]
MAXSTRINGSIZE=10      
 
[HTTPV11]
Enable=1
Sockets=HTTPREST
 
[HTTPREST]
Port=8080              
IPsBind=
URIs=HTTPURI
Security=1             
 
[HTTPURI]              
URL=/rest              
PrepareIn=ALL          
Instances=2,5,1,1      
CORSEnable=1           
AllowOrigin=*          
 
[HTTPJOB]
MAIN=HTTP_START         
ENVIRONMENT=environment 
 
[ONSTART]
jobs=HTTPJOB            
RefreshRate=30          

Obs: O exemplo abaixo contém  valores obrigatórios referente ao REST com comentários.

Bloco de código
languagesass
themeRDark
titleConfiguração REST com comentários
linenumberstrue
[General]
MAXSTRINGSIZE=10       
	;//MAXSTRINGSIZE: Essa chave é obrigatória com o valor mínimo de 10.
 
[HTTPV11]
Enable=1
Sockets=HTTPREST
 
[HTTPREST]
Port=8080              
	;//Port: portaPorta que o REST irá utilizar para subir o serviço, pode ser alterada para qualquer outra porta.
IPsBind=
URIs=HTTPURI
Security=1             
	;//Security: O valor 1 é obrigatório.

InactiveTimeout=60
	;// Tempo em segundos que a conexão será mantida sem que o cliente efetue requisições.
MaxRequests=0
	;//Número máximo de requisições por conexão
SSLCheckClientCert=0
	;//Indica se fará ou não a validação do certificado de cliente, encerrando a conexão caso não valide.

 
[HTTPURI]              
	;//HTTPURI: mesmoMesmo valor da chave URIs, definido na linha 713.
URL=/rest              
	;//URL: pathPath onde o rest irá subir, pode ser alterado.
PrepareIn=ALL          
Instances=1,1    	;//PrepareIn: Chave que indica qual environment será preparado para o rest. ALL significa que deve ser preparado para atender todas as empresas. Caso você queira utilizar o REST com empresa 1 filial 01, por exemplo, inserir na chave 1,01.
Instances=2,5,1,1      
	;//Instances: Chave obrigatória, mais informações sobre configuração em http://tdn.totvs.com/display/tec/Instances . A configuração desta chave impacta diretamente no total de licenças consumidas pelo REST.
CORSEnable=1           
	;//CORSEnable: essaEssa chave é obrigatória e com o valor 1, caso contrário, o REST não aceitara as requisições dos apps.
AllowOrigin=*          
	;//AllowOrigin: Essa chave limita os IP's que o REST do Protheus pode responder, deve conter o valor * (responder para qualquer ip) ou os ip's específicos onde a integração será realizada.
 

Obs: O exemplo acima contém apenas os valores obrigatórios referente ao REST.

[HTTPJOB]
MAIN=HTTP_START         
	;//MAIN: Cria um JOB que inicializa o servidor HTTP na inicialização do serviço.
ENVIRONMENT=environment 
	;//ENVIRONMENT: Diz em qual environment(ambiente) o JOB será configurado.
 
[ONSTART]
jobs=HTTPJOB            
	;//Jobs: Indica que o HTTPJOB será iniciado quando o serviço for iniciado.
RefreshRate=30          
	;//RefreshRate: Indica qual a taxa de atualização para reiniciar o JOB em caso de falha.
Informações

A partir da lib 20230403 em ambientes com binário a partir do 20.3.1.3 é possível a configuração das tags InactiveTimeout, MaxRequests, SSLCertificateCA e SSLCheckClientCert nos Sockets Rest.

Chave

Descrição

Valores

Padrão

SSLCheckClientCertIndica se fará ou não a validação do certificado de cliente, encerrando a conexão caso não valide.
  • 0 - não faz a validação
  • 1 - faz a validação
0
SSLCertificateCAIndica o caminho absoluto do certificado de CA do certificado apontado pela chave SSLCertificate.
Vazio
MaxRequests

Número máximo de requisições por conexão, se for zero não há limite de requisições. Caso seja maior que zeros a conexão será encerrada após responder a quantidade de requisições informada. 


0
InactiveTimeOutTempo em segundos que a conexão será mantida sem que o cliente efetue requisições. Se for zero não há limite de tempo para fechar a conexão.
0

Maiores detalhes: HTTPSERVER - Servers



Informações
titleConfiguração específica Meu Coletor de Dados

Exclusivamente para o aplicativo Meu Coletor de Dados, é necessário incluir a chave MODULE na seção HTTPURI:

Bloco de código
[HTTPURI]
Module=46

A configuração do REST do Meu Coletor de Dados não pode ser compartilhada com os demais aplicativos.

Informações
titleConfiguração específica APP Minha Produção

Exclusivamente para o aplicativo Minha Produção, caso seja configurado o Acesso Direto (alternativa ao Mingle), é necessário incluir a chave MODULE na seção HTTPURI:

Bloco de código
[HTTPURI]
Module=10

A configuração do REST do Meu Coletor de Dados não pode ser compartilhada com os demais aplicativos e a empresa/filial deve ser obrigatoriamente informada na cláusula PrepareIn.

3.1 Configuração REST no Intera

Se você está na modalidade Intera de licenciamento, a configuração do REST terá uma pequena particularidade.

Estamos falando da chave "stateless" na sessão [URIHTML], que define a maneira em que as licenças serão consumidas: Na inicialização da thread ou por demanda.

Para habilitar o comportamento de consumo de licença por demanda, o conteúdo da chave deve ser "1". Caso a chave não exista ou contenha o valor zero, o consumo de licença na inicialização da thread será mantido.

Informações
titleExemplo de configuração para Intera

[URIHTML]
URL=/rest/app
PrepareIn=All
Instances=2,2
CORSEnable=1
AllowOrigin=*
Stateless=1

Saiba mais detalhes acessando este link.


Após configurado, você pode iniciar o executável do appserver do REST em modo console e verificar se ele subiu corretamente através da mensagem no console:

Image Added


4 - Problemas mais comuns:

A falta de quaisquer uma das chaves no exemplo acima faz com que o REST não funcione como esperado. Abaixo listamos algumas:

...

            A chave prepareIn indica para quais empresas/filiais o REST irá subir uma thread. O Valor ALL usado no exemplo acima sobe uma thread para cada empresa e filial. Porém é consumida uma licença (especificar qual licençaTOTVS i) para cada thread. Caso o cliente não for utilizar todas as empresas/filias, é possível subir apenas para as que ele deseja. Exemplo:
PrepareIn=T1, D MG 01
Criar exemplo com 2 empresas / filias

  • CORSEnable

           A chave CORSEnable indica se o REST do Protheus pode receber requisições fora do próprio servidor. Para utilização dos Apps, essa chave é obrigatória com o valor 1. Pois seu valor padrão é 0.

...

          A chave AllowOrigin indica de quais ip's o REST pode responder. Quando o valor é * (asterisco), indica que o Protheus pode responder para qualquer ip.

          Para utilização dos Apps, é possível limitar o acesso apenas para os ranges de ip's do Mingle (criar link para documentação do Mingle ) listados abaixo: 

  • 34.66.1.67
  • 34.66.27.255
  • 34.121.152.77
  • 34.122.88.30
  • 146.148.50.219
  • 104.155.181.56
  • 34.28.132.209
  • 35.225.171.255
  • 34.69.186.150
  • 138.219.88.0/24
  • 189.125.78.128/25
  • 187.94.48.0/20
  • 189.89.32.0/20
  • 181.41.160.0/19


Obs: Essa configuração também deve ser feita no firewall da rede do cliente.

5 - Validações:

Existem diferentes maneiras para verificar se o REST esta com a configuração correta.

5.1 Acesso pelo navegador

A primeira e mais fácil de fazer, é acessa-lo pelo navegador, verificando esse acesso é possível saber se o REST esta de pé. Caso não seja possível acessa-lo, os aplicativos não irão funcionar.

Como testar:

5.1.1 - Ambiente local

Caso esteja fazendo o teste em ambiente local, siga os passos abaixo:

  1. Descobrir o ip local:
    é possível verificar rodando o comando ipconfig no command do windows:
    Image Added

  2. Verificar qual porta foi configurado o rest:
    é a chave Port dentro da tag HTTPREST do arquivo appserver.ini.  ( linha 9 do exemplo na sessão 3)

  3. Verificar qual a chave do rest:
    é a chave URL dentro da tag HTTPURI do arquivo appserver.ini.  ( linha 15 do exemplo na sessão 3)

Em nosso exemplo, ficaria acessar pelo browser:

http://ip_da_sua_maquina:porta_configurada/chave10.172.145.178:8080/rest

Acessar o endereço pelo navegadorCaso o ip de seu computador seja 10.

5.1.2 - Ambiente do cliente

Caso o teste seja feito em um ambiente do cliente, será necessário orienta-lo a seguir os passos acima. 

Após ter o endereço do REST em mãos, é recomendado testar de um outro aparelho que não seja o próprio servidor. Pode ser qualquer computador ou celular que esteja na mesma rede (do cliente).

Em ambos os casos, deverá ser aberta uma página semelhante a abaixo:

Image Added

6 - Exposição do endereço externo

Após ter seu REST configurado e funcional no ambiente, para alguns aplicativos, pode ser necessário expo-lo em IP fixo externo (para configuração do ALIAS do Mingle).

Esta configuração deve ser feita na infraestrutura de rede de sua empresa, e os IPs de origem do Mingle devem ser liberados para realizar conexões de entrada e saída.

  1. Não é recomendável liberar o acesso à todas as requisições no firewall, pois pode gerar um problema de segurança.

7 - Documentações auxiliares:

Abaixo algumas documentações que podem auxiliar em caso de dúvidas/problemas:

Framework: Configuração do REST (Geral)

02. REST com ERP Microsiga Protheus

Exemplo de configuração do REST

Dicas sobre Configuração REST Protheus®

Pacotes de atualização Mobile