Páginas filhas
  • LGX - LRESTLOGIXRESPONSE

Componente utilizado para criação do retorno das requisições REST no formato JSON, com base em informações repassadas para montagem como STATUS, PAYLOAD, MESSAGE.

Para saber mais sobre REST LOGIX acesse Guia de Desenvolvimento de APIs para o produto Logix.

Componente disponível a partir da versão 12.1.13 do Logix.

Hierarquia



Sintaxe


LET m_restresponse_reference = _ADVPL_create_component(NULL,"LRESTLOGIXRESPONSE")


Métodos GET


Métodos acessíveis através da função _ADVPL_get_property que permite recuperar e manipular os valores do componente:


Método GET: GENERATE 

Efetua a geração do retorno da requisição REST, com base nas informações de PAYLOAD, MESSAGE e STATUS já previamente setados.

Sintaxe




_ADVPL_get_property(< l_reference >, "GENERATE" ) => CHAR

Retorno




TipoDescrição
CHAR

Conteúdo texto gerado no formato JSON, que será utilizado como retorno do resultado da requisição REST, já convertido no formato UTF8.

Exemplo




Exemplo GET GENERATE
#------------------------------------------------------------------------------#
FUNCTION LRESTLOGIXRESPONSE_getGENERATE()
#------------------------------------------------------------------------------#
    DEFINE l_json_reference VARCHAR(10)
    DEFINE l_logix_response VARCHAR(10)
    DEFINE l_json CHAR(1000)
     
    #--# Utilização do método SERIALIZE da classe LJSONOBJECT  #--#
    LET l_json = _ADVPL_get_property(l_json_reference,"SERIALIZE")
     
    #--# Criação da resposta padronizada utilizando a classe LRestLogixResponse  #--#
    LET l_logix_response = _ADVPL_create_component(NULL,"LRestLogixResponse")
    CALL _ADVPL_set_property(l_logix_response,"PAYLOAD",l_json)
 
    #--# Propriedades opcionais #--#
    CALL _ADVPL_set_property(l_logix_response,"MESSAGE","Erro Msg","Erro Detail", "10")
    CALL _ADVPL_set_property(l_logix_response,"STATUS",'200')
 
    #--# Opcional, utilizada quando o conteúdo de retorno for um JSONArray #--#
    CALL _ADVPL_set_property(l_logix_response,"HAS_NEXT",TRUE)
     
    RETURN _ADVPL_get_property(l_logix_response,"GENERATE")
END FUNCTION




Métodos SET


Métodos acessíveis através da função _ADVPL_set_property que permite alterar e manipular os valores do componente:


Método SET: HAS_NEXT

Define quando o conteúdo do PAYLOAD  for do tipo JSONArray para gerar o retorno da requisição REST.

Sintaxe




CALL _ADVPL_set_property(< l_json_reference >,"HAS_NEXT", < l_has_next >)

Parâmetros




NomeTipoDescriçãoObrigatório?Padrão
l_has_nextSMALLINT

Indicador de conteúdo do Payload no formato JSONArray.

VALORES: TRUE ou FALSE

SimFALSE

Exemplo




Exemplo SET HAS_NEXT
#------------------------------------------------------------------------------#
FUNCTION LRESTLOGIXRESPONSE_setHAS_NEXT()
#------------------------------------------------------------------------------#
	DEFINE l_json_reference VARCHAR(10)
    DEFINE l_logix_response VARCHAR(10)
	DEFINE l_json CHAR(1000)
	
	LET l_json = _ADVPL_get_property(l_json_reference,"SERIALIZE")
	
	LET l_json = '{ "valores": ["item1","item2","item3",{"subitem1":"subitem2"}]}'
	
	LET l_logix_response = _ADVPL_create_component(NULL,"LRestLogixResponse")
    CALL _ADVPL_set_property(l_logix_response,"PAYLOAD",l_json,"payload")
    CALL _ADVPL_set_property(l_logix_response,"HAS_NEXT",TRUE)
    CALL _ADVPL_set_property(l_logix_response,"STATUS",'201')
    
	RETURN _ADVPL_get_property(l_logix_response,"GENERATE")
END FUNCTION



Método SET: PAYLOAD

Define o conteúdo do PAYLOAD que será remetido na requisição REST.

Sintaxe




CALL _ADVPL_set_property(< l_json_reference >,"PAYLOAD", < l_payload >)

Parâmetros




NomeTipoDescriçãoObrigatório?Padrão
l_payloadCHARConteúdo do payload que será transportado na requisição REST.Sim

Exemplo




Exemplo SET PAYLOAD
#------------------------------------------------------------------------------#
FUNCTION LRESTLOGIXRESPONSE_setPAYLOAD()
#------------------------------------------------------------------------------#
    DEFINE l_json_reference VARCHAR(10)
    DEFINE l_logix_response VARCHAR(10)
    DEFINE l_json CHAR(1000)
     
    #--# Utilização do método SERIALIZE da classe LJSONOBJECT  #--#
    LET l_json = _ADVPL_get_property(l_json_reference,"SERIALIZE")
     
    #--# Criação da resposta padronizada utilizando a classe LRestLogixResponse  #--#
    LET l_logix_response = _ADVPL_create_component(NULL,"LRestLogixResponse")
    CALL _ADVPL_set_property(l_logix_response,"PAYLOAD",l_json)
 
    #--# Propriedades opcionais #--#
    CALL _ADVPL_set_property(l_logix_response,"MESSAGE","Erro Msg","Erro Detail", "10")
    CALL _ADVPL_set_property(l_logix_response,"STATUS",'200')
 
    #--# Opcional, utilizada quando o conteúdo de retorno for um JSONArray #--#
    CALL _ADVPL_set_property(l_logix_response,"HAS_NEXT",TRUE)
     
    RETURN _ADVPL_get_property(l_logix_response,"GENERATE")
END FUNCTION



Método SET: STATUS

Define o valor do código de STATUS de retorno da requisição REST.

Sintaxe




CALL _ADVPL_set_property(< l_reference >,"STATUS", < l_status >)

Parâmetros




NomeTipoDescriçãoObrigatório?Padrão
l_statusCHARCódigo do status que será assumido no retorno da requisição REST.Sim

Exemplo




Exemplo SET STATUS
#------------------------------------------------------------------------------#
FUNCTION LRESTLOGIXRESPONSE_setSTATUS()
#------------------------------------------------------------------------------#
    DEFINE l_json_reference VARCHAR(10)
    DEFINE l_logix_response VARCHAR(10)
    DEFINE l_json CHAR(1000)
     
    #--# Utilização do método SERIALIZE da classe LJSONOBJECT  #--#
    LET l_json = _ADVPL_get_property(l_json_reference,"SERIALIZE")
     
    #--# Criação da resposta padronizada utilizando a classe LRestLogixResponse  #--#
    LET l_logix_response = _ADVPL_create_component(NULL,"LRestLogixResponse")
    CALL _ADVPL_set_property(l_logix_response,"PAYLOAD",l_json)
 
    #--# Propriedades opcionais #--#
    CALL _ADVPL_set_property(l_logix_response,"MESSAGE","Erro Msg","Erro Detail", "10")
    CALL _ADVPL_set_property(l_logix_response,"STATUS",'200')
 
    #--# Opcional, utilizada quando o conteúdo de retorno for um JSONArray #--#
    CALL _ADVPL_set_property(l_logix_response,"HAS_NEXT",TRUE)
     
    RETURN _ADVPL_get_property(l_logix_response,"GENERATE")
END FUNCTION



Método SET: MESSAGE

Define o conteúdo da mensagem (MESSAGE), código de STATUS de retorno da requisição REST e detalhamento da mensagem (DETAIL_MESSAGE).

Sintaxe




CALL _ADVPL_set_property(< l_reference >,"MESSAGE", [ < l_message > ] , < l_status_code >, [ < l_detail_message > ] )

Parâmetros




NomeTipoDescriçãoObrigatório?
l_messageCHARTexto resumido da mensagem quando indicar algum erro.Não
l_status_codeCHAR

Código do status que será assumido no retorno da requisição REST.

Sim
l_detail_messageCHARTexto detalhado da mensagem quando indicar algum erro.Não

(aviso)(aviso)(aviso) ATENÇÃO:  Quando STATUS CODE é 200 (OK) não deve-se preencher conteúdo para os parâmetros MESSAGE e DETAIL_MESSAGE, pois a classe LRestResponseMessage interpretará que o STATUS_CODE foi registrado com valor incorreto e irá converter o STATUS_CODE automaticamente para 500 (Interlal Server Error)


Exemplo




Exemplo SET STATUS
#------------------------------------------------------------------------------#
FUNCTION LRESTLOGIXRESPONSE_setSTATUS()
#------------------------------------------------------------------------------#
    DEFINE l_json_reference VARCHAR(10)
    DEFINE l_logix_response VARCHAR(10)
    DEFINE l_json CHAR(1000)
     
    #--# Utilização do método SERIALIZE da classe LJSONOBJECT  #--#
    LET l_json = _ADVPL_get_property(l_json_reference,"SERIALIZE")
     
    #--# Criação da resposta padronizada utilizando a classe LRestLogixResponse  #--#
    LET l_logix_response = _ADVPL_create_component(NULL,"LRestLogixResponse")
    CALL _ADVPL_set_property(l_logix_response,"PAYLOAD",l_json)
 
    #--# Propriedades opcionais #--# OPCAO 01 RESPOSTA
    CALL _ADVPL_set_property(l_logix_response,"MESSAGE","Erro Msg","404","Erro Detail Message")
     
    #--# Propriedades opcionais #--#  OPCAO 02 RESPOSTA      
    CALL _ADVPL_set_property(l_logix_response,"STATUS",'200')
 
    #--# Opcional, utilizada quando o conteúdo de retorno for um JSONArray #--#
    CALL _ADVPL_set_property(l_logix_response,"HAS_NEXT",TRUE)
     
    RETURN _ADVPL_get_property(l_logix_response,"GENERATE")
END FUNCTION

(informação) Veja que no exemplo acima apenas uma das opções pde ser utilizada para indicar STATUS 200 ou STATUS 404, apenas para exemplificar as duas formas.




Veja Também


Exemplos completos de utilização disponíveis no Guia de Desenvolvimento de APIs para o produto Logix.