Olá a todos.
Levantei um serviço Rest e comecei a fazer alguns testes, porém está havendo uma demora na resposta quando o retorno começa a crescer. No primeiro exemplo abaixo a resposta do serviço é "instantânea". Já no segundo exemplo o retorno é imediato, porém o navegador continua processando. Quando integro a Api a uma aplicação web o segundo exemplo causa um erro devido a demora na resposta.
Exemplo 1:
Exemplo 2:
Api Rest:
#Include 'Protheus.ch'
#Include 'restful.ch'
ser Function WEBSERVICE_TESTE()
Return
WSRESTFUL WEB_TESTE DESCRIPTION "Serviço REST para WEB_TESTE"
WSDATA usuario As String
WSDATA senha As String
WSMETHOD GET login DESCRIPTION "Retorna se o usuário é válido" WSSYNTAX "/WEB_TESTE/login" PATH "/login"
END WSRESTFUL
WSMETHOD GET login WSRECEIVE usuario,senha WSSERVICE WEB_TESTE
Local cUsuario := Self:usuario
Local cSenha := Self:senha
Local aArea := GetArea()
Local cJson := ""
Local nRetorno := ""
Local jsonMont := JsonObject():new()
::SetContentType("application/json")
if(cUsuario =="teste")
nRetorno := '{"id":1,"codigo":"12345"}'
elseif(cUsuario =="teste1")
nRetorno := '{"id":1,"codigo":"12345","nome":"teste1","cargo":"gerente", "cc":"999999999"}'
endif
jsonMont:fromJson(nRetorno)
cJson := FWJsonSerialize(jsonMont)
::SetResponse(cJson)
freeObj(jsonMont)
RestArea(aArea)
Return(.T.)
Configuração do serviço:
[rest]
SourcePath=E:\TOTVS12\Microsiga\Protheus\apo\rest\rest
RootPath=E:\TOTVS12\Microsiga\protheus_data
StartPath=\system\
x2_path=
RpoDb=top
RpoLanguage=Portuguese
RpoVersion=120
LocalFiles=CTREE
Trace=0
localdbextension=.dtc
TopMemoMega=10
PictFormat=DEFAULT
DateFormat=DEFAULT
MAXLOCKS= 30000
SpecialKey=PRD
[TopConnect]
DataBase=MSSQL
Server=localhost
ALIAS=PRODUCAO
PROTHEUSONLY=0
driver=totvsapi.dll
[Drivers]
Active=TCP
[TCP]
TYPE=TCPIP
Port=2564
[General]
InstallPath=E:\TOTVS12\Protheus
ConsoleLog=0
CtreeMode=Server
MAXSTRINGSIZE=10
CtreePreImg=1
[MAIL]
Protocol=POP3
[HTTP]
ENABLE=1
PORT=87
PATH=C:\TOTVS 12\help-online
ENVIRONMENT=rest
[GENTCPIP]
Enable=0
[HTTPV11]
Enable=1
Sockets=HTTPREST
[HTTPREST]
Port=8084
IPsBind=
URIs=URIHTML
SECURITY=0
[URIHTML]
URL=/html-protheus/rest
PrepareIn=01,00
Instances=1,1
CORSEnable=1
AllowOrigin=*
[ONSTART]
jobs=HTTPJOB
RefreshRate=120
[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=rest