Árvore de páginas

Versões comparadas

Chave

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

...

  • Programa em THF - PO-UI utilizando componentes dinâmicos
  • Programa deve ser cadastrado no cadastro de programas (men012aa), com as flags "visualiza menu" e "permite personalização" marcadas.

07. Template padrão API Rest com pontos de UPC (Customização)

Abaixo um exemplo de uma API Rest com entradas de upc nos contextos web de get, post, put e delete.


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 criacao do
            // registro customizado. Nao 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.





08. Consulta de programas passiveis de personalização e customização customização

 Em construção. 


09. Consulta de programas progress que foram migrados para PO-UI

Em construção

10. Guia de Padrões de desenvolvimento de API para o produto Datasul

...