Como configurar um AppServer REST no Protheus

No artigo de hoje, vou mostrar como subir um serviço de WS Rest no Protheus.

Obs.: O tutorial abaixo foi baseado nos exemplos do TDN, no fim desse artigo irei deixar os links de referência para quem quiser se aprofundar no assunto e nos exemplos

  1. Copie a pasta appserver de algum slave que você tenha, e deixe com o nome por exemplo, appserver_rest
  2. Crie também um APO específico para esse serviço, no nosso caso será no caminho C:\TOTVS\ERP\Protheus\apo_rest com o nome AMB_REST dentro do .ini
  3. No arquivo .ini, altere a porta, o nome do serviço e insira as chaves HTTPJOB, ONSTART, HTTPV1, HTTPREST e HTTPURI
[AMB_REST]
SourcePath=C:\TOTVS\ERP\Protheus\apo_rest
RootPath=C:\TOTVS\ERP\Protheus_Data
StartPath=\system\
RpoDb=top
RpoLanguage=Portuguese
RpoVersion=120
Trace=0
TopMemoMega=1
DBAlias=PROTHEUS
DBServer=localhost
DBDatabase=MSSQL
DBPort=7890
StartSysInDB=1

[TopConnect]
Database=MSSQL
Alias=PROTHEUS
ProtheusOnly=0
Port=7980

[Drivers]
Active=TCP

[TCP]
TYPE=TCPIP
Port=1259

[General]
InstallPath=C:\TOTVS\ERP\Protheus
Segmento=YddTQHWW=VZF=yhu
Serie===AV
BuildKillUsers=1
MaxStringSize=10

[LICENSECLIENT]
server=localhost
port=7777

[service]
Name=TOTVS_PROTHEUS_REST
Displayname=TOTVS | WebService REST

[TCPSERVER]
Enable=0

;Configurando o serviço que irá rodar no ambiente do REST
[HTTPJOB]
Main=HTTP_START
Environment=AMB_REST

;Instrução para quando iniciar o serviço, iniciar o HTTPJOB
[ONSTART]
Jobs=HTTPJOB
RefreshRate=120

;Habilitar o HTTP para REST
[HTTPV11]
Enable=1
Sockets=HTTPREST

;Define a porta o HTTP do Rest, e qual/quais serão os URI
;Para testes deixei a Security como 0, que não requer a autenticação, mas o ideal é que em produção essa chave esteja habilitada
[HTTPREST]
Port=8400
URIs=HTTPURI
SECURITY=0

;Define no URI que irá usar a empresa 99, filial 01 e somente 1 instância
[HTTPURI]
URL=/rest
PrepareIn=99,01
Instances=1,1
  1. Agora crie um atalho do appserver.exe para a área de trabalho, e inicie o serviço em modo console (depois se quiser instale ele no services.msc)

Print demonstrando que serviço subiu

  1. Pelo navegador, acesse a URL juntamente com a porta que você configurou, no nosso caso foi http://localhost:8400/rest

Acessando via navegador e verificando a lista de opções

  1. Crie um fonte apenas para testar se o serviço do REST esta funcionando (talvez seja necessário reiniciar o serviço do appserver)
//Bibliotecas
#Include "TOTVS.CH"
#Include "RESTFul.CH"

WSRESTFUL zWSTest DESCRIPTION "Exemplo de WS com REST"
    //Atributos usados
    //WSDATA {nome do atributo} AS {tipo do atributo como Integer, String, etc}
    WSDATA count AS INTEGER

    //Métodos usados
    //WSMETHOD {Tipo do método como PUT, GET, POST e DELETE} {ID do Método} DESCRIPTION {Descrição do Método}
    WSMETHOD GET DateTime DESCRIPTION "Exemplo que retorna a data e hora atual"
END WSRESTFUL


WSMETHOD GET DateTime WSRECEIVE count WSSERVICE zWSTest
    Local lRet := .T.

    ::SetContentType("application/json")

    ::SetResponse('{"date":' + dToS(Date()) + ', "time":"' + Time() + '", "count": ' + cValToChar(::count) + ' }')
Return lRet
  1. Verifique novamente a URL do passo 5, para ver se está listando agora a customização feita

Customização listada na página

  1. Realize algum teste com softwares de integração com REST, no nosso caso iremos usar o PostMan

Testando a customização no Postman

Referências:

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan Atilio (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

2 Responses

  1. Erick Landaverde disse:

    Pueden explicar como activar el token Oauth 2.0 !! eso seria de mucha mucha ayuda

Deixe uma resposta