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étodo | Queryparam | Pathparam | Descrição | Exemplo da URL |
---|---|---|---|---|
GET | start (inicio da listagem) limit (quantidade de linhas, valor padrão 10) | retorno de listagem do ModelRetorn | http://localhost:8084/hmlt-protheus/rest/fwhtmlmodel/customer?start=1&limit=50 | |
GET | id (Recno da linha da tabela) | retorno dos dados do Model | http://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": [] }
2 Comentários
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_().
Jandir Deodato De Souza Silva
Boa tarde. Para uso sem chave de compilação é necessário utilizar o PUBLISH USER MODEL REST
FWRestModel..
Abs!