Páginas filhas
  • 4. Publicando o REST do Model

A Lib do Protheus com as funcionalidades para utilização do TOTVS | HTML Framework estará disponível em 2016. No momento versões controladas serão disponibilizadas para as equipes de Segmentos envolvidas no projeto de Experiências de Uso

Importante

Caso o seu modelo possua qualquer particularidade, não faça uso dos dicionários de dados do Prothues e/ou a API padrão não esteja atendendo sua necessidade, você deverá criar uma classe herdando da FWRestModel e sobrescrever os métodos conforme sua implementação de modelo necessita: FWRestModel

 O REST do Model está disponível somente para Models que utilizam tabelas do banco de dados

Atenção

Para utilizar o comando PUBLISH MODEL REST NAME é necessário o include FWMVCDEF.CH mais atual, disponibilizado no portal do cliente. É necessário também declarar o uso deste include no seu fonte.


Para utilizar o REST do Model no TOTVS | Framework HTML não é necessário criar uma classe REST para cada ModelDef, basta incluir a cláusula abaixo no mesmo fonte da função:

PUBLISH MODEL REST NAME <nome_rest_model>

 No campo <nome_rest_model> informar o identificador do Model que será utilizado no endereço de chamada do REST, como no exemplo utilizando o cadastro de clientes abaixo:

#INCLUDE "FWMVCDEF.CH"

PUBLISH MODEL REST NAME customer

Static Function Modeldef()
Local oModel     := Nil

oModel:= MPFormModel():New("MATA030",/*Pre-Validacao*/, /*Pos-Validacao*/, /*Commit*/,/*Cancel*/)
oModel:AddFields("MATA030_SA1", Nil , FWFormStruct(1,"SA1"),/*Pre-Validacao*/,/*Pos-Validacao*/,/*Carga*/)
Return(oModel)

 Nesse exemplo, baseado no exemplo de Appserver.ini , o endereço para chamada REST do Model será http://localhost:8084/html-protheus/rest/fwhtmlmodel/customer, sendo os métodos HTTP disponíveis:

MétodoQueryparamPathparamDescriçãoExemplo da URL 
GET

start (inicio da listagem)

limit (quantidade de linhas, valor padrão 10) 


retorno de listagem do ModelRetornhttp://localhost:8084/hmlt-protheus/rest/fwhtmlmodel/customer?start=1&limit=50
GET
id (Recno da linha da tabela)retorno dos dados do Modelhttp://localhost:8084/hmlt-protheus/rest/fwhtmlmodel/customer/6
POST
id (Recno da linha da tabela)

inclusão do Model

http://localhost:8084/hmlt-protheus/rest/fwhtmlmodel/customer/6
PUT
id (Recno da linha da tabela)atualização do Model http://localhost:8084/hmlt-protheus/rest/fwhtmlmodel/customer/6
 DELETE
id (Recno da linha da tabela)exclusção do Model http://localhost:8084/hmlt-protheus/rest/fwhtmlmodel/customer/6

 O JSON de retorno dos métodos possui a propriedade id que contém o Recno da linha tabela, além dos campos do Model


 Exemplo de retorno:

 {
  "data": {
    "A1_ABATIMP": "",
    "A1_ABICS": "",
    "A1_AGREG": "",
    "A1_ALIFIXA": "",
    "A1_ALIQIR": 0,
    "A1_ATIVIDA": "",
    "A1_ATR": 0,
    "A1_B2B": "",
    "A1_BAIRRO": ".",
    "A1_BAIRROC": "",
    "A1_BAIRROE": "",
    "A1_BCO1": "",
    "A1_BCO2": "",
    "A1_BCO3": "",
    "A1_BCO4": "",
    "A1_BCO5": "",
    "A1_CALCSUF": "",
    "A1_CARGO1": "",
    "A1_CARGO2": "",
    "A1_CARGO3": "",
    "A1_CBO": "",
    "A1_CDRDES": "",
    "A1_CEINSS": "",
    "A1_CEP": "",
    "A1_CEPC": "",
    "A1_CEPE": "",
    "A1_CGC": "",
    "A1_CHQDEVO": 0,
    "A1_CHVCAM": "",
    "A1_CLASSE": "",
    "A1_CLASVEN": "",
    "A1_CLICNV": "",
    "A1_CLIFAT": "",
    "A1_CLIPRI": "",
    "A1_CNAE": "",
    "A1_COD": "000001",
    "A1_COD_MUN": "",
    "A1_CODAGE": "",
    "A1_CODFID": "",
    "A1_CODFOR": "",
    "A1_CODMARC": "",
    "A1_CODMUN": "",
    "A1_CODMUNE": "",
    "A1_CODPAIS": "",
    "A1_CODSIAF": "",
    "A1_COMAGE": 0,
    "A1_COMIS": 0,
    "A1_COMPLEM": "",
    "A1_COND": "",
    "A1_CONDPAG": "",
    "A1_CONTA": "",
    "A1_CONTAB": "",
    "A1_CONTATO": "",
    "A1_CONTRIB": "",
    "A1_CRDMA": "",
    "A1_CTARE": "",
    "A1_CXPOSTA": "",
    "A1_DDD": "",
    "A1_DDI": "",
    "A1_DESC": 0,
    "A1_DESCAM": "",
    "A1_DESCPAG": "",
    "A1_DEST_1": "",
    "A1_DEST_2": "",
    "A1_DEST_3": "",
    "A1_DIASPAG": 0,
    "A1_DSATIV1": "",
    "A1_DSATIV2": "",
    "A1_DSATIV3": "",
    "A1_DSATIV4": "",
    "A1_DSATIV5": "",
    "A1_DSATIV6": "",
    "A1_DSATIV7": "",
    "A1_DSATIV8": "",
    "A1_DSCREG": "",
    "A1_EMAIL": "",
    "A1_END": ".",
    "A1_ENDCOB": "",
    "A1_ENDENT": "",
    "A1_ENDNOT": "",
    "A1_ENDREC": "",
    "A1_ENTID": "",
    "A1_ENTORI": "",
    "A1_EST": "SP",
    "A1_ESTADO": "",
    "A1_ESTC": "",
    "A1_ESTE": "",
    "A1_FAX": "",
    "A1_FILDEB": "",
    "A1_FILIAL": "D MG",
    "A1_FILTRF": "",
    "A1_FOMEZER": "",
    "A1_FORMVIS": "",
    "A1_FRETISS": "",
    "A1_GRPTRIB": "",
    "A1_GRPVEN": "",
    "A1_HPAGE": "",
    "A1_HRCAD": "",
    "A1_HREXPO": "",
    "A1_HRTRANS": "",
    "A1_IBGE": "",
    "A1_IDESTN": "",
    "A1_IENCONT": "",
    "A1_IMGUMOV": "",
    "A1_INCISS": "",
    "A1_INCULT": "",
    "A1_INDRET": "",
    "A1_INOVAUT": "",
    "A1_INSCR": "",
    "A1_INSCRM": "",
    "A1_INSCRUR": "",
    "A1_IRBAX": "",
    "A1_LC": 0,
    "A1_LCFIN": 0,
    "A1_LOJA": "01",
    "A1_LOJPRI": "",
    "A1_MAIDUPL": 500,
    "A1_MATR": 0,
    "A1_MCOMPRA": 1500,
    "A1_MENSAGE": "",
    "A1_METR": 0,
    "A1_MINIRF": "",
    "A1_MOEDALC": 0,
    "A1_MSALDO": 1500,
    "A1_MSBLQL": "",
    "A1_MSEXP": "",
    "A1_MUN": ".",
    "A1_MUNC": "",
    "A1_MUNE": "",
    "A1_NATUREZ": "",
    "A1_NIF": "",
    "A1_NOME": "CLIENTE PADRAO P/ ORCAMENTO",
    "A1_NREDUZ": "ORCAMENTO",
    "A1_NROCOM": 3,
    "A1_NROPAG": 0,
    "A1_NVESTN": 0,
    "A1_OBS": "",
    "A1_OBSERV": "",
    "A1_ORIGCT": "",
    "A1_OUTRMUN": "",
    "A1_PAGATR": 0,
    "A1_PAIS": "",
    "A1_PAISDES": "",
    "A1_PERCATM": 0,
    "A1_PERFECP": 0,
    "A1_PERFIL": 0,
    "A1_PESSOA": "",
    "A1_PFISICA": "",
    "A1_PRF_OBS": "",
    "A1_PRIOR": "",
    "A1_PRSTSER": "",
    "A1_RECCOFI": "",
    "A1_RECCSLL": "",
    "A1_RECFET": "",
    "A1_RECINSS": "",
    "A1_RECIRRF": "",
    "A1_RECISS": "",
    "A1_RECPIS": "",
    "A1_REGDES": "",
    "A1_REGESIM": "",
    "A1_REGIAO": "",
    "A1_REGPB": "",
    "A1_RESFAT": "",
    "A1_RFABOV": "",
    "A1_RFACS": "",
    "A1_RG": "",
    "A1_RISCO": "",
    "A1_RTEC": "",
    "A1_SALDUP": 3000,
    "A1_SALDUPM": 1500,
    "A1_SALFIN": 0,
    "A1_SALFINM": 0,
    "A1_SALPED": 0,
    "A1_SALPEDL": 0,
    "A1_SATIV1": "",
    "A1_SATIV2": "",
    "A1_SATIV3": "",
    "A1_SATIV4": "",
    "A1_SATIV5": "",
    "A1_SATIV6": "",
    "A1_SATIV7": "",
    "A1_SATIV8": "",
    "A1_SIMPLES": "",
    "A1_SIMPNAC": "",
    "A1_SUBCOD": "",
    "A1_SUFRAMA": "",
    "A1_SUPER": "",
    "A1_TABELA": "",
    "A1_TDA": "",
    "A1_TEL": "",
    "A1_TELEX": "",
    "A1_TEMVIS": 0,
    "A1_TIMEKEE": "",
    "A1_TIPCLI": "",
    "A1_TIPO": "R",
    "A1_TIPOCLI": "",
    "A1_TIPPER": "",
    "A1_TIPPRFL": "",
    "A1_TITPROT": 0,
    "A1_TMPSTD": "",
    "A1_TMPVIS": "",
    "A1_TPCAMP": "",
    "A1_TPDP": "",
    "A1_TPESSOA": "",
    "A1_TPFRET": "",
    "A1_TPISSRS": "",
    "A1_TPJ": "",
    "A1_TPNFSE": "",
    "A1_TRANSF": "",
    "A1_TRANSP": "",
    "A1_TRIBFAV": "",
    "A1_UNIDVEN": "",
    "A1_USADDA": "",
    "A1_VACUM": 1500,
    "A1_VEND": "",
    "A1_VINCULO": "",
    "A1_VM_MARC": "",
    "A1_VM_OBS": "",
    "id": 6
  },
  "length": 0,
  "messages": []
}




  • Sem rótulos

2 Comentários

  1. Usuário desconhecido (felipe.raposo)

    Essa funcionalidade somente poderá ser utilizada com chave de compilação? Ou clientes também poderão utilizá-la?

    Notei que tentar compilar um fonte assim, sem chave de compilação, dá o seguinte erro "Regular functions are not allowed in code. Use USER FUNCTION or STATIC FUNCTION at line 2. [Project: Fontes] - Compilation key not entered."

    A include troca o "PUBLISH MODEL REST" por uma função W_NAME_PMR_().

    1. Boa tarde. Para uso sem chave de compilação é necessário utilizar o PUBLISH USER MODEL REST

      FWRestModel..

      Abs!