Histórico da Página
...
- Visão Geral
- Lado Progress
- Lado HTML com PO-UI
- Exemplo de utilização
- Lado Progress
- Lado HTML com PO-UI
- Tela XXX
- Outras Ações / Ações relacionadas
- Outras Ações / Ações relacionadas
- Tela XXX
- Principais Campos e Parâmetros
- Principais Campos e Parâmetros
- Tabelas utilizadas
...
Abaixo temos a lista de preprocessadores que devem ser passados para a include i-epcrest.i:
Preprocessador | Descrição |
---|---|
endpoint | Especifica o endpoint que esta sendo chamado pelo HTML. Uma API REST deve possuir 1 ou mais endpoints. |
event | É o nome do evento que esta ocorrendo antes de chamar a UPC. Exemplo: beforeCreate, getAll, getMetaData, etc. |
jsonVar | É a variável do tipo JsonObject que será passada como INPUT-OUTPUT para a UPC. |
...
Parâmetros recebidos na UPC da API REST
Parametro | Tipo | Tipo de Dados | Descrição |
---|---|---|---|
pEndPoint | INPUT | CHARACTER | Contem o nome do endpoint que está sendo executado. |
pEvent | INPUT | CHARACTER | Contem o nome do evento que está sendo executado. |
pAPI | INPUT | CHARACTER | Contem o nome da API que está sendo executada. |
jsonIO | INPUT-OUTPUT | JSONObject | Contem o JSON com os dados (campos ou valores) que poderão ser customizados. |
02. EXEMPLO DE UTILIZAÇÃO
...
Bloco de código | ||
---|---|---|
| ||
/************************************************************************** ** idiomas_upc.p - Exemplo de UPCepc depara API REST: Endpoints REST ***************************************************************************/ USING PROGRESS.json.*. USING PROGRESS.json.ObjectModel.*. USING com.totvs.framework.api.*. DEFINE INPUT PARAMETER pEndPoint AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER pEvent AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER pAPI pEvent AS CHARACTER NO-UNDO. DEFINE INPUT-OUTPUT PARAMETER jsonIO AS JSONObject NO-UNDO. DEFINE VARIABLE jAList AS DEFINE INPUTJsonArray NO-UNDO. DEFINE VARIABLE jObj AS JsonObject NO-UNDO. DEFINE VARIABLE hBuf AS HANDLE NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE iTot PARAMETER pAPI AS INTEGER NO-UNDO. DEFINE VARIABLE cType AS CHARACTER NO-UNDO. // carrega as definicoes dos campos da tabela IF pEndPoint = "getMetaData" AND pEvent = "getMetaData" THEN DO ON STOP UNDO, LEAVE: // obtem a lista de campos e valores ASSIGN jAList = jsonIO:getJsonArray('root'). // cria um buffer da tabela para obter os campos da tabela usuar_mestre CREATE BUFFER hBuf FOR TABLE 'usuar_mestre'. DO ix = 1 TO hBuf:NUM-FIELDS: // ignora os campos que nao estao nesta lista IF NOT CAN-DO("nom_usuario,cod_usuario,cod_dialet,dat_fim_valid,cod_e_mail_local", hBuf:BUFFER-FIELD(ix):NAME) THEN NEXT. // monta a formatacao do item ASSIGN jObj = NEW JsonObject(). jObj:add('property', hBuf:BUFFER-FIELD(ix):NAME). jObj:add('label', hBuf:BUFFER-FIELD(ix):Label). jObj:add('visible', TRUE). jObj:add('disabled', FALSE). // ajusta o tipo ASSIGN cType = JsonAPIUtils:convertAblTypeToHtmlType(hBuf:BUFFER-FIELD(ix):type). jObj:add('type', cType). // adiciona o objeto na lista jAList:add(jObj). END. hBuf:BUFFER-RELEASE(). DELETE OBJECT hBuf. // retorna a nova lista com os campos adicionados jsonIO:Set("root", jAList). END. // carrega os valores dos campos da tabela IF pEndPoint = "getAll" AND pEvent = "getAll" THEN DO ON STOP UNDO, LEAVE: // obtem a lista de campos e valores ASSIGN jAList = jsonIO:getJsonArray('root'). FIND FIRST usuar_mestre NO-LOCK NO-ERROR. // quardado o tamanho da lista em variavel para evitar LOOP devido a adicionar novos itens na lista ASSIGN iTot = jAList:length. DO ix = 1 TO iTot: ASSIGN jObj = jAList:GetJsonObject(ix). // alimenta os novos dados IF AVAILABLE usuar_mestre THEN DO: jObj:add('cod_usuario', usuar_mestre.cod_usuario) NO-ERROR. jObj:add('nom_usuario', usuar_mestre.nom_usuario) NO-ERROR. jObj:add('cod_dialet', usuar_mestre.cod_dialet) NO-ERROR. jObj:add('dat_fim_valid', usuar_mestre.dat_fim_valid) NO-ERROR. jObj:add('cod_e_mail_local', usuar_mestre.cod_e_mail_local) NO-ERROR. END. // adiciona o objeto na lista jAList:add(jObj). FIND NEXT usuar_mestre NO-LOCK NO-ERROR. END. // devolve para o json ROOT a lista nova com novos objetos jsonIO:Set("root", jAList). END. IF pEndPoint = "getOne" AND pEvent = "getOne" THEN DO ON STOP UNDO, LEAVE: // nao implementado END. IF pEndPoint = "create" AND pEvent = "afterCreate" THEN DO ON STOP UNDO, LEAVE: // nao implementado END. /* fim */ |
Ao fazer as requisições, virão os seguintes resultados na UPC.
Bloco de código |
---|
Busca do METADADOS onde foram adicionados os novos campos cod_usuario e nom_usuario: GET - http://localhost:8180/dts/datasul-rest/resources/prg/trn/v1/idiomas/metadados "items": [ { "visible": true, "property": "cod_idioma", "disabled": false, "label": "Idioma", "type": "string" }, { "visible": true, "property": "des_idioma", "disabled": false, "label": "Descrição", "type": "string" }, { "visible": true, "property": "cod_idiom_padr", "disabled": false, "label": "Idioma Padrão", "type": "string" }, { "visible": true, "property": "cod_usuario", "disabled": false, "label": "Usuário", "type": "string" }, { "visible": true, "property": "nom_usuario", "disabled": false, "label": "Nome", "type": "string" } ] Busca dos dados onde foram adiconados novos valores: GET - http://localhost:8180/dts/datasul-rest/resources/prg/trn/v1/idiomas "items": [ { "codIdioma": "12345678", "desIdioma": "12345678901234567890", "cod_dialet": "Pt", "cod_usuario": "super", "nom_usuario": "Super" }, { "codIdioma": "ale", "desIdioma": "Alemão", "cod_dialet": "PT", "cod_usuario": "Manoel", "nom_usuario": "Manoel de Carvalho" }, { "codIdioma": "EN", "desIdioma": "Ingles", "cod_dialet": "PT", "cod_usuario": "Joao", "nom_usuario": "Joao da Silva" } ]DEFINE INPUT-OUTPUT PARAMETER jsonIO AS JSONObject NO-UNDO. |
03. TELA XXXXX
Outras Ações / Ações relacionadas
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas