Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Expandir
Bloco de código
firstline1
/*------------------------------------------------------------------------
    File        : templateExemplo.p
    Purpose     : demonstração de definições API REST .

    Syntax      :

    Description : API REST 

    Author(s)   : 
    Created     : 
    Notes       :
  ----------------------------------------------------------------------*/

/* ***************************  Definitions  ************************** */

//Definição da ut-api padrão das apis rest
{utp/ut-api.i}

//Definição da ut-api-action padrão das apis rest com os contextos web: get, post, put e delete
{utp/ut-api-action.i pFindAll GET /~* }
 
{utp/ut-api-action.i pUpdateById PUT /~* }
 
{utp/ut-api-action.i pGetMetadata POST /metadata/~* }
{utp/ut-api-action.i pValidateForm POST /validateForm/~* }
{utp/ut-api-action.i pValidateField POST /validateField/~* }
{utp/ut-api-action.i pCreate POST /~* }
 
{utp/ut-api-action.i pDeleteById DELETE /~* }

//Definição da ut-api-notfound 
{utp/ut-api-notfound.i}

// Definição de temp table  

/* ***************************  Definitions end  ************************** */

/*------------------------------------------------------------------------------
 Purpose: Procedure que retorna a metadata 
 Notes:
------------------------------------------------------------------------------*/
PROCEDURE pGetMetadata:
    DEFINE INPUT  PARAMETER oJsonInput  AS JsonObject NO-UNDO. // json de entrada 
    DEFINE OUTPUT PARAMETER oJsonOutput AS JsonObject NO-UNDO. // json de saida
 
    DEFINE VARIABLE oResponse AS JsonAPIResponse NO-UNDO. // response
	
	// criar um novo jsonarray pra receber os metadados   
     
    /*/ Define a lista de campos a serem apresentados no HTML */     
   
END PROCEDURE.

/*------------------------------------------------------------------------------
 Purpose: Procedure que retorna os valores 
 Notes:
------------------------------------------------------------------------------*/ 
PROCEDURE pFindAll:
    DEFINE INPUT  PARAMETER oJsonInput  AS JsonObject NO-UNDO.
    DEFINE OUTPUT PARAMETER oJsonOutput AS JsonObject NO-UNDO.
 
    DEFINE VARIABLE oResponse AS JsonAPIResponse NO-UNDO.   
 
    // Monta a lista de valores dos campos
    
        // Alimenta o campo ID utilizado pela interface HTML como chave primaria       
     
    // Obtem um jsonArray com base no conteudo da temp-table
     
    // Adiciona o JsonArray em um JsonObject para enviar para a UPC
    
    // Realiza a chamada da UPC Progress
    {include/i-epcrest.i &endpoint=findAll &event=findAll &jsonVar=oObj}
 
    // Recupera o JsonArray de dentro do JsonObject retornado pela UPC    
 
    // Retorna a colecao de dados customizados ou nao para a interface HTML
    oResponse   = NEW JsonAPIResponse(oIdiomas).
    oJsonOutput = oResponse:createJsonResponse().
END PROCEDURE. 

/*------------------------------------------------------------------------------
 Purpose: Procedure que cria um novo registro na tabela 
 Notes:
------------------------------------------------------------------------------*/  
PROCEDURE pCreate:
    DEFINE INPUT  PARAMETER oJsonInput  AS JsonObject NO-UNDO.
    DEFINE OUTPUT PARAMETER oJsonOutput AS JsonObject NO-UNDO.
 
    DEFINE VARIABLE oBody          AS JsonObject           NO-UNDO.
    DEFINE VARIABLE oResponse      AS JsonAPIResponse      NO-UNDO.         
  
    // Le os parametros e os dados enviados pela interface HTML
    
    // Obtem os demais dados   
 
    // Cria o registro na tabela IDIOMA
    
            // Realiza a chamada da UPC Progress para a criacaocriação do
            // registro customizado. NaoNão utilizaremos o retorno da UPC
            // neste caso.
            {include/i-epcrest.i &endpoint=create &event=afterCreate &jsonVar=oBody}    
 
    // Retorna o ID e se foi criado com sucesso    
 
    // Retorna o oBody montado para a interface HTML
    oResponse   = NEW JsonAPIResponse(oBody).
    oJsonOutput = oResponse:createJsonResponse().
END PROCEDURE.

/*------------------------------------------------------------------------------
 Purpose: Procedure que atualiza o conteudo do registro pelo ID  
 Notes:
------------------------------------------------------------------------------*/   
PROCEDURE pUpdateById:
    DEFINE INPUT  PARAMETER oJsonInput  AS JsonObject NO-UNDO.
    DEFINE OUTPUT PARAMETER oJsonOutput AS JsonObject NO-UNDO.
 
    DEFINE VARIABLE oBody          AS JsonObject           NO-UNDO.
    DEFINE VARIABLE oRequest       AS JsonAPIRequestParser NO-UNDO.
    DEFINE VARIABLE oResponse      AS JsonAPIResponse      NO-UNDO.
    
    // Le os parametros e os dados enviados pela interface HTML
    
    // Obtem o ID
    
    // Obtem os demais dados
    
    // Atualiza o registro na tabela pelo ID (recid)
    
            // Realiza a chamada da UPC Progress para atualizar o registro
            // na tabela cutomizada ou nao. Nao utilizaremos o retorno da UPC
            // neste caso.
            {include/i-epcrest.i &endpoint=update &event=afterUpdate &jsonVar=oBody}      
	
    // Retorna o ID e se foi atualizado com sucesso    
 
    // Retorna o oBody montado para a interface HTML
    oResponse   = NEW JsonAPIResponse(oBody).
    oJsonOutput = oResponse:createJsonResponse().
END PROCEDURE.

/*------------------------------------------------------------------------------
 Purpose: Procedure delete por ID   
 Notes:
------------------------------------------------------------------------------*/ 
PROCEDURE pDeleteById:
    DEFINE INPUT  PARAMETER oJsonInput  AS JsonObject NO-UNDO.
    DEFINE OUTPUT PARAMETER oJsonOutput AS JsonObject NO-UNDO.
    
    // Le os parametros enviados pela interface HTML
    
    // Eliminacao de registro individual              
     
    // Retorna o oBody montado para a interface HTML
    oResponse   = NEW JsonAPIResponse(oObj).
    oJsonOutput = oResponse:createJsonResponse().
END PROCEDURE.
 
/*------------------------------------------------------------------------------
 Purpose: Procedure valida form   
 Notes:
------------------------------------------------------------------------------*/  
PROCEDURE pValidateForm:
    DEFINE INPUT  PARAMETER oJsonInput  AS JsonObject NO-UNDO.
    DEFINE OUTPUT PARAMETER oJsonOutput AS JsonObject NO-UNDO.
 
    DEFINE VARIABLE oRequest   AS JsonAPIRequestParser NO-UNDO.
    DEFINE VARIABLE oResponse  AS JsonAPIResponse      NO-UNDO.
    DEFINE VARIABLE oBody      AS JsonObject           NO-UNDO.    
    
    // obtem o nome da propriedade que ocorreu o LEAVE para validacao
        
    /* Recebemos do HTML o JSON abaixo  
 
    // Novas Acoes sobre os campos da tela     
        
    // encapsulamos o retorno para enviar para a UPC    
 
    // Realiza a chamada da UPC Progress
    {include/i-epcrest.i &endpoint=validateForm &event=validateForm &jsonVar=oObj}   
 
    // obtem o retorno customizado, onde o mesmo foi alterado e retornado na tag root    
 
    /* JSON de retorno para o HTML      
     
    // Retorna a colecao de campos customizados ou nao para a interface HTML
    oResponse   = NEW JsonAPIResponse(oRet).
    oJsonOutput = oResponse:createJsonResponse().
END PROCEDURE.

/*------------------------------------------------------------------------------
 Purpose: Procedure valida campos   
 Notes:
------------------------------------------------------------------------------*/  
PROCEDURE pValidateField:
    DEFINE INPUT  PARAMETER oJsonInput  AS JsonObject NO-UNDO.
    DEFINE OUTPUT PARAMETER oJsonOutput AS JsonObject NO-UNDO.
 
    DEFINE VARIABLE oRequest   AS JsonAPIRequestParser NO-UNDO.
    DEFINE VARIABLE oResponse  AS JsonAPIResponse      NO-UNDO.
    DEFINE VARIABLE oBody      AS JsonObject           NO-UNDO.    
     
    /* Recebemos do HTML o JSON abaixo
    {
        "property": "codAcoes",
        "value": "FocoDesIdioma"
    }
    */
	
    // Novas Acoes sobre os campos da tela
                
    // encapsulamos o retorno para enviar para a UPC    
	
    // Realiza a chamada da UPC Progress
    {include/i-epcrest.i &endpoint=validateField &event=validateField &jsonVar=oObj}   
 
    // obtem o retorno customizado, onde o mesmo foi alterado e retornado somente
    // o conteudo da tag return    
    
    // Retorna a colecao de campos customizados ou nao para a interface HTML
    oResponse   = NEW JsonAPIResponse(oRet).
    oJsonOutput = oResponse:createJsonResponse().
END PROCEDURE.

...