Histórico da Página
Í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 | ||
---|---|---|
| ||
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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
[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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
[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.
Maiores detalhes: HTTPSERVER - Servers |
Informações | ||
---|---|---|
| ||
Exclusivamente para o aplicativo Meu Coletor de Dados, é necessário incluir a chave MODULE na seção HTTPURI:
A configuração do REST do Meu Coletor de Dados não pode ser compartilhada com os demais aplicativos. |
Informações | ||
---|---|---|
| ||
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:
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 | ||
---|---|---|
| ||
[URIHTML] |
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:
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:
- Descobrir o ip local:
é possível verificar rodando o comando ipconfig no command do windows. : - 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) - 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:
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.
- 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®