Quero passar o objeto JSON de uma service para a minha controller, tentei `cResponseJson := SolicitacaoArmazem:get()` mas não deu certo.

Olá, boa tarde.

Estou aprendendo TLPP aqui e estou tentando jogar um JSON de uma Service para a minha Controller. Eu fiz da seguinte forma, primeiro, defini a Controller que criou a API com sucesso, e está recebendo os argumentos do REQUEST como deveria (Tirei partes que acho que não é necessário p/ entendimento):

Method get() as Logical Class SolicitacaoArmazemController

    // Setar Empresa e Filial no começo do App (Necessário)
    rpcSetEnv(cEmpAnt, cFilAnt)

    ConOut("SolicitacaoArmazemController:get - Coletando os Parametros da Query e do JSON Body")

    // Etc

    // Simular o jResponse (O JSON que tem na Classe) pra simular a resposta.
    // Inicialmente, trago da Service para testes e entendimento da arquitetura.
    Local cResponseJson as Json

    // Etc

    // Retornar um JSON criado pela Service
    cResponseJson := SolicitacaoArmazem:get()

    cTesteChegouAqui := "Sim ou não?"

    ConOut("SolicitacaoArmazemController:get - Configurando os Headers e a Response")
    oRest:setKeyHeaderResponse('Content-Type', 'application/json; charset=utf-8')    
    oRest:setResponse(cResponseJson)

    // Resetar a Empresa/Filial e liberar licenças utilizadas.
    rpcClearEnv()

Return .T.

E ai na minha Service eu crio um JSON pra testes, que eu passo para a minha Controller:

class SolicitacaoArmazemService
    Public Data jResponse as Json

    Public method new() as Object
    Public method get() as Json
EndClass

Method new() as Object Class SolicitacaoArmazemService
    ConOut("SolicitacaoArmazemService:new - Construindo a Service e instanciando JsonObject...")
    ::jResponse := JsonObject():New()
Return Self

Method get() as Json Class SolicitacaoArmazemService
    Local jResponse := '[{"Mensagem":"Hello World!"}]'
Return ::jResponse

Porém, ele não vai pra frente na linha cResponseJson := SolicitacaoArmazem:get().

Informações adicionais:

No Debug, ele quando chega na linha em questão tem o cResponseJson definido como Nil, e na linha seguinte ele para de executar e não preenche o cTesteChegouAqui. Vejam a imagem:

Imagem mostrando que não chegou no cTesteChegouAqui

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags api tlpp rest advpl json jsonobject ou faça a sua própria pergunta.