Introdução
REST é um acrônimo para Representational State Transfer – uma descrição quase sem sentido da tecnologia de serviço da web mais usada! O REST é uma maneira de dois sistemas de computador se comunicarem via HTTP de maneira semelhante aos navegadores e servidores da Web.
Compartilhar dados entre dois ou mais sistemas sempre foi um requisito fundamental do desenvolvimento de software. Por exemplo, considere comprar um seguro automóvel. Sua seguradora deve obter informações sobre você e seu veículo para solicitar dados das autoridades de registro de automóveis, agências de crédito, bancos e outros sistemas. Tudo isso acontece de forma transparente em tempo real para determinar se uma política pode ser oferecida.
O principal nesta arquitetura são as URLs do sistema e os resources (resource é um recurso, entidade). Ele aproveita os métodos HTTP para se comunicar, que são:
GET: Use solicitações GET para recuperar apenas informações / representação de recursos – e não modificá-las de nenhuma maneira. Como as solicitações GET não alteram o estado do recurso, esses métodos são considerados seguros . Além disso, as APIs GET devem ser idempotentes , o que significa que fazer várias solicitações idênticas deve produzir o mesmo resultado todas as vezes até que outra API (POST ou PUT) altere o estado do recurso no servidor.
POST: Use APIs do POST para criar novos recursos, por exemplo, um arquivo é subordinado a um diretório que o contém ou uma linha é subordinada a uma tabela de banco de dados. Falando estritamente em termos de REST, os métodos POST são usados para criar um novo recurso na coleção de recursos.
DELETE: Conforme o nome se aplica, as APIs DELETE são usadas para excluir recursos
PUT: Use APIs PUT principalmente para atualizar o recurso existente (se o recurso não existir, a API poderá decidir criar um novo recurso ou não). A principal diferença entre POST e PUT é que o primeiro pode lidar não somente com recursos, mas também pode fazer processamento de informações
Configuração REST no Protheus
O web service REST do AdvPL não utiliza as seções HTTP e WebServices utilizadas para o configurar o modelo SOAP.
Apesar disso o REST também utiliza working threads para atender as requisições recebidas também pelo protocolo HTTP.
O primeiro passo para criarmos um serviço REST é configurar o Protheus como um servidor HTTP REST. Para isso vamos manipular o arquivo .ini do AppServer, conforme exemplo abaixo:
A função HTTP_START que prepara o AppServer como servidor HTTP para REST, necessitando ser configurada na seção ONSTART:
[GENERAL]
MAXSTRINGSIZE=10
[ONSTART]
JOBS=HTTPJOB
REFRESHRATE=120
[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=LOBO_12_25
A chave MAXSTRINGSIZE é obrigatória na seção GENERAL com valor mínimo 10 para que o REST suporte requisições com mais de 1Mb
Habilitando o servidor HTTP para REST:
[HTTPV11]
Enable=1
Sockets=HTTPREST
Obs:
A chave Sockets referencia a(s) seção(ões) com a configuração de porta e URL que a mesma irá atender, permitindo que o Application Server seja configurado com mais de uma porta HTTP do REST:
Configuração do(s) socket(s) definidos na seção HTTPV11:
[HTTPREST]
Port=8084
IPsBind=
URIs=HTTPURI
Security=0
;Public=classe/path/get1,classe2/path/gety,classe3/path/post
;Notenant=classe/path/get2,classe2/path/getv,classe3/path/post2
Parâmetro | Descrição |
Port | Porta HTTP |
IPsBind | Indica os IPs que serão atendidos por essa porta, se não informado atenderá qualquer IP / DNS associado ao servidor |
URIs | Seções com configuração de URL e ambiente (pelo menos uma seção) |
Security | Indica se a autenticação de requisição esta habilitada |
Public | Chave pública que contém listas de EndPoints que não possuem autenticação |
NoTenant | Ao ser usada não será validada as empresas/filiais, apenas a autenticação do usuário. |
Observação:
O HTTP do REST verifica existência do campo Authorization no HEADER da requisição, porém a autorização é realizada pelo framework do produto que está/ utilizando o protocolo
Para facilitar o desenvolvimento e testes pode-se configurar a chave Security com valor 0 (zero) para desabilitar a autenticação
A chave URIs referência a(s) seção(ões) com a configuração da URL que a porta irá atender, permite também que seja configurado com mais de uma URL como exemplo abaixo:
[HTTPREST]
Port=8084
IPsBind=
URIs=HTTPURI,HTTPURI2
Security=1
Configuração da(s) seções URIs:
[HTTPURI]
URL=/rest
PrepareIn=99,01
Instances=1,1
CORSEnable=1
AllowOrigin=*
Parâmetro | Descrição |
URL | Indica o endereço que será atendido Nesse exemplo http://localhost:8012/rest |
Preparein | Informações de empresa e filial para preparação do ambiente das working threads |
Instances | Configuração de inicialização de working threads |
CorsEnable | Indica se habilita o CORS |
Observaçoes | |
A chave CORS é utilizada para permitir que páginas WEB de diferentes domínio do qual o servidor HTTP do Protheus está alocado, consigam realizar a requisição na nossa URI. |
Essa parte configuração não temos muito como fugir do que está descrito no TDN, está bem documentado por parte da TOTVS.
Após a configuração, o appserver.ini deverá ficar da seguinte maneira:
[HTTPV11]
Enable=1
Sockets=HTTPREST
[HTTPREST]
Port=8084
URIs=URIHTML
SECURITY=1
[URIHTML]
URL=/rest
PrepareIn=All
Instances=2,2
CORSEnable=1
AllowOrigin=*
[ONSTART]
jobs=HTTPJOB
RefreshRate=30
[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=LOBO_12_25
Iniciando o AppServer
Após a adição das seções no .ini, deve reiniciar o appserver e podemos ver no log que está no ar nosso servidor http/rest:
Testando a Configuração REST
Com nosso servidor web no ar, vamos acessar via navegador a URI que configuramos no .ini, para ter 100% de certeza que esta tudo ok com o nosso servidor REST
Para acessar nossa URI, devemos acessar o caminho definido via navegador. Nesse caso, (exemplo acima) a URL que vamos acessar para testar nossa URI é a seguinte:
Se tudo estiver ok, será exibido a seguinte tela:
Onde nada mais é que uma página WEB contendo todas as API’s Rest que está disponível no nosso ERP Protheus.
Conclusão
Neste artigo vimos como configurar o servidor Protheus como HTTP REST, dessa forma podemos utiliza-lo para realizar integrações com outros aplicativos.
Referencias:
https://tdn.totvs.com/pages/viewpage.action?pageId=185747842
https://tdn.totvs.com/display/framework/REST+ADVPL
https://tdn.totvs.com/pages/viewpage.action?pageId=185757438
https://tdn.totvs.com/display/tec/Instances
No próximo post vamos criar o nosso promeiro WebServer REST.
Até lá
Abraços
0 comentário