Web Services REST/Server

web service REST do AdvPL não utiliza as seções HTTPWebServices 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.

Observações
O protocolo HTTP do REST não atende a outros tipos de requisições como o HTTP do SOAP (que também atende arquivos estáticos, APW e APL)

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 

Alteração de comportamento

partir da release 12.1.33 do Protheus, a ser liberada em Outubro de 2021, o comportamento padrão de autenticação de WebServices SOAP e REST será alterado. A partir desta versão, caso a chave Security não seja informada no arquivo appserver.ini, os serviços serão iniciados exigindo autenticação de usuário. Caso seja necessário trabalhar sem autenticação, a chave deverá ser configurada com o valor 0 (Exemplo: Security=0).



A função HTTP_START que prepara o Application Server como HTTP para REST, devendo ser configurada na seção ONSTART:

[GENERAL] MAXSTRINGSIZE=10  
[ONSTART] JOBS=HTTPJOB REFRESHRATE=120 
[HTTPJOB] MAIN=HTTP_START ENVIRONMENT=environment

Seção HTTPV11 


Para habilitar o HTTP para REST criar a seção abaixo no appserver.ini:

[HTTPV11] Enable=1 Sockets=HTTPREST
Parâmetro
Descrição
Obrigatório
EnableIndica se o HTTP esta habilitadox
SocketsSeções com configuração de porta e URL (pelo menos uma seção)x


A chave Sockets referencia a(s) seção(ões) com a configuração de porta e URL que a mesma ira atender, permitindo que o Application Server seja configurado com mais de uma porta HTTP do REST:

[HTTPV11] Enable=1 Sockets=HTTPREST,HTTPREST2

Seções Sockets 


Exemplo de configuração de uma seção Sockets:

[HTTPREST] Port=8080 IPsBind= URIs=HTTPURI Security=1
Parâmetro
Descrição
Obrigatório
PortPorta HTTPx
IPsBindIndica os IPs que serão atendidos por essa porta, se não informado atenderá qualquer IP / DNS associado ao servidor
URIsSeções com configuração de URL e ambiente (pelo menos uma seção)x
SecurityIndica se a autenticação de requisição esta habilitadax
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 esta 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 referencia 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:

[HTTPREST] Port=8080 IPsBind= URIs=HTTPURI,HTTPURI2 Security=1

Seções URIs 


Exemplo de configuração de uma seção URIs:

[HTTPURI] URL=/rest PrepareIn= Instances=1,1 Public=classe/path/get1,classe2/path/gety,classe3/path/post NoTenant=classe/path/get2,classe2/path/getv,classe3/path/post2
Parâmetro
Descrição
Obrigatório
URLIndica o endereço que será atendido
Nesse exemplo http://localhost:8080/rest
x
PrepareinInformações para preparação do ambiente das working threads
InstancesConfiguração de inicialização de working threadsx
PublicChave pública que contém listas de EndPoints que não possuem autenticação
NoTenantAo ser usada não será validada as empresas/filiais, apenas a autenticação do usuário
Observações
A preparação de ambiente da chave PrepareIn é realizada pelo framework do produto que esta utilizando o protocolo 
A chave Instances é configurada como no HTTP do SOAP
A chave Public precisa ser utilizada com muita cautela, visto que ela desliga a segurança do endpoint permitindo acesso a qualquer um que conheço o endereço


Conexões TLS no AppServer

A partir da versão 17.3.0.20 do AppServer e LIB Label 20200727, o REST Server terá suporte ao TLS1.1 e TLS1.2.

Para que a configuração fique de acordo com o SSL já utilizado pelo binário, utilize o meio de configuração já existente.

No INI do REST, na Seção HTTPREST, adicione a chave a ser utilizada:

TLS1_0=1
TLS1_1=1
TLS1_2=1

Valores válidos

Valor

Descrição

0 (default)

Desabilita

1

Habilita


Exemplo

[HTTPREST]
Port=8040
URIs=HTTPURI
SECURITY=1
SSL2=0
SSL3=1
TSL1_0=0
TSL1_1=1
TSL1_2=1


A chave TLS1 foi mantida por compatibilidade, exemplo de utilização:

Valores válidos

Valor

Descrição

0 (default)Desabilita
1TLS 1.0
2TLS 1.1
3TLS 1.2

Exemplo

[HTTPREST]
Port=8040
URIs=HTTPURI
SECURITY=1
SSL2=0
SSL3=1
TLS1 = 3

A chave TLS1 está mantida em modo de compatibilidade. Isso significa que a atualização da aplicação irá funcionar adequadamente, porém esta chave deve ser substituída pelas novas versões TLS1_0, TLS1_1 e TLS1_2. Caso quaisquer das novas chaves do protocolo TLS sejam encontradas no arquivo de configuração, a aplicação não reconhecerá as informações contidas na TLS1.



Atualizado em 03/09/2023
Este artigo foi útil?  
Agradecemos sua avaliação.