Estava testando requisições simulando erros a um endpoint para checar os retornos. Percebi que o mesmo retorna sempre 1 vez o erro correto, por exemplo:
O CNPJ informado já foi utilizado no cliente …
E depois ao simular novamente ele retorna erro 500:
{“code”:500,“message”:“Internal Server Error”}.
Sempre nessa sequencia, retorna o erro corretamente e depois da erro 500 sem eu ter alterado nenhuma propriedade do json.
O log salvo em uma pasta no sftp está sempre com as descrições corretas, mas quando solicito via postman retorna 500.
Código utilizado:
#include ‘totvs.ch’
#include ‘tlpp-core.th’
#include ‘tlpp-rest.th’
class PostCliCashUp
public method new() constructor
@post(endpoint ='/postcli', description= 'Inclusão de clientes no ERP')
public method incluir_clientes() as logical
end class
method new() class PostCliCashUp ;return self
method incluir_clientes() class PostCliCashUp
local lRPC as logical
local lAtivAmb as logical
local jBodyReq as json
local aCabec as array
local nOpc as numeric
LOCAL jResp as json
Private lMsErroAuto as logical
If Select("SX2") == 0
RPCClearEnv()
RpcSetType( 3 )
RpcSetEnv( "01",'020101', , , "",,, , , , )
lAtivAmb := .T. // Seta se precisou montar o ambiente
Endif
try
jBodyReq := jsonObject():new()
jBodyReq:fromJson(oRest:getBodyRequest())
cCgc := jBodyReq['CNPJ_CPF']
cCod := jBodyReq['CODIGO']
cPessoa := jBodyReq['PESSOA']
cLoja := jBodyReq['LOJA']
cNome := jBodyReq['NOME']
cFantasia := jBodyReq['FANTASIA']
cEndereco := jBodyReq['ENDERECO']
cBairro := jBodyReq['BAIRRO']
cTipo := jBodyReq['TIPO']
cEstado := jBodyReq['ESTADO']
cMun := jBodyReq['COD_MUN']
cCep := jBodyReq['CEP']
cInsMun := jBodyReq['INS_MUN']
cInsEst := jBodyReq['INS_EST']
cPais := jBodyReq['PAIS']
cEmail := jBodyReq['EMAIL']
cContaC := jBodyReq['CONTA_CONTABIL']
cBolEmail := jBodyReq['BOLETO_EMAIL']
cDda := jBodyReq['USA_DDA']
cRisco := jBodyReq['RISCO']
nLimCre := jBodyReq['LIM_CREDITO']
cVenc := jBodyReq['VENC_LIM_CREDITO']
cStatus := jBodyReq['STATUS']
cBacen := jBodyReq['PAIS_BACEN']
cCondpag := jBodyReq['COND_PAG']
cConta := jBodyReq['COND_PAG']
aCabec := {}
aCabec := {{"A1_CGC", cCgc, Nil},;
{"A1_COD", cCod, Nil},;
{"A1_PESSOA", cPessoa, Nil},;
{"A1_LOJA", cLoja, Nil},;
{"A1_NOME", cNome, Nil},;
{"A1_NREDUZ", cFantasia, Nil},;
{"A1_END",cEndereco, Nil},;
{"A1_BAIRRO",cBairro, Nil},;
{"A1_TIPO", cTipo, Nil},;
{"A1_EST", cEstado, Nil},;
{"A1_COD_MUN",cMun, Nil},;
{"A1_CEP",cCep, Nil},;
{"A1_INSCRM", cInsMun, Nil},;
{"A1_INSCR", cInsEst, Nil},;
{"A1_PAIS", cPais, Nil},;
{"A1_EMAIL", cEmail, Nil},;
{"A1_CONTA", cContaC, Nil},;
{"A1_BLEMAIL", cBolEmail, Nil},;
{"A1_USADDA", cDda, Nil},;
{"A1_RISCO", cRisco, Nil},;
{"A1_LC", nLimCre, Nil},;
{"A1_VENCLC", Stod(cVenc), Nil},;
{"A1_MSBLQL", cStatus, Nil},;
{"A1_CODPAIS", cBacen, Nil},;
{"A1_COND", cCondpag, Nil}}
nOpc := 3
lMsErroAuto := .F.
MsExecAuto({|a, b| CRMA980(a, b)},aCabec, nOpc)
IF lMsErroAuto
mostraErro('\data\','erro_sa1.txt')
cError := memoread('\data\erro_sa1.txt')
err := errorClass():new()
err:description := cError
throw err
EndIF
jResp := jsonObject():new()
jResp['STATUS'] := 'CLIENTE INCLUIDO COM SUCESSO!!'
oRest:setResponse(jResp:toJson())
catch err
cError := err:description
jResp := jsonObject():new()
jResp['error'] := cError
oRest:setFault(jResp:toJson())
endtry
IF lRPC
rpcCLearEnv()
EndIF
return .T.