...
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
// Realiza a chamada da UPC Progress para a criação do
// registro customizado. Nã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. |
|
Abaixo um template de programa de UPC rest.
08. Consulta de programas passiveis de personalização e customização
...