...
- 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 |
---|
| /*------------------------------------------------------------------------
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
...