Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmento - TOTVS Backoffice (Linha Protheus) - ADVPL - Criação de Web Service REST

Dúvida

Preciso criar um WebService no modelo REST, porém, só criei até hoje no modelo SOAP.

Vocês teriam algum exemplo e documentação sobre isso?! O que achei no TDN é muito pouco para que possamos fazer um primeiro teste.

 

Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) – ADVPL – A partir da versão 11.80

Solução
Exemplo de Criação de um WS utilizando a Tecnologia Rest

#include "PROTHEUS.ch"
#include "RESTFUL.ch"

#xtranslate @{Header <(cName)>} => ::GetHeader( <(cName)> )
#xtranslate @{Param <n>} => ::aURLParms\[ <n> \]
#xtranslate @{EndRoute} => EndCase
#xtranslate @{Route} => Do Case
#xtranslate @{When <path>} => Case NGIsRoute( ::aURLParms, <path> )
#xtranslate @{Default} => Otherwise

Static aUsers := {{'1','Oscar','27'},{'2','Luana','40'},{'3','Kaua','25'}}

WsRestful tstwsrest Description "WebService REST para testes"

WsMethod GET Description "Sincronização de dados via GET" WsSyntax "/GET/{method}"
WsMethod POST Description "Sincronização de dados via POST" WsSyntax "/POST/{method}"
WsMethod DELETE Description "Sincronização de dados via DELETE" WsSyntax "/DELETE/{method}"

End WsRestful

WsMethod GET WsService tstwsrest
Local cUser := ''
Local nUser

::SetContentType( 'application/json' )

@{Route}
@{When '/users'}
cUser := '['
For nUser := 1 to Len(aUsers)
cUser += '{"id":'+ aUsers[nUser][1]+;
',"name":"'+aUsers[nUser][2]+;
'","age":'+aUsers[nUser][3]+'}'
cUser += if(nUser < Len(aUsers),',','')
Next nUser
cUser += ']'
::SetResponse(cUser)
@{When '/users/{id}'}
nUser := aScan(aUsers,{|x| x[1] == @{Param 2} })
If nUser > 0
cUser := '{"id":'+ aUsers[nUser][1]+;
',"name":"'+aUsers[nUser][2]+;
'","age":'+aUsers[nUser][3]+'}'
::SetResponse(cUser)
Else
SetRestFault(400,'Ops')
Return .F.
EndIf
@{Default}
SetRestFault(400,"Ops")
Return .F.
@{EndRoute}

Return .T.

WsMethod POST WsService tstwsrest
Local cJson := ::GetContent()
Local oParser
Local cUser, nUser

::SetContentType( 'application/json' )

@{Route}
@{When '/user'}
If FwJsonDeserialize(cJson,@oParser)
aAdd(aUsers,{cValToChar(oParser:id),oParser:name,cValToChar(oParser:age)})
nUser := Len(aUsers)
cUser := '{"id":'+ aTail(aUsers)[1]+;
',"name":"'+aUsers[nUser][2]+;
'","age":'+aUsers[nUser][3]+'}'
::SetResponse(cUser)
Else
SetRestFault(400,'Ops')
Return .F.
EndIf
@{Default}
SetRestFault(400,"Ops")
Return .F.
@{EndRoute}
Return .T.

WsMethod DELETE WsService tstwsrest
Local nUser
::SetContentType( 'application/json' )

@{Route}
@{When '/user/{id}'}
nUser := aScan(aUsers,{|x| x[1] == @{Param 2} })
If nUser > 0
aDel(aUsers, nUser)
aSize(aUsers, Len(aUsers) - 1)
Else
SetRestFault(400,"Ops")
Return .F.
EndIf
@{Default}
SetRestFault(400,"Ops")
Return .F.
@{EndRoute}
Return .T.

 

Segue alguns Link para auxilio no desenvolvimento Rest

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

1 Comentários

  • Avatar
    Leandro Lemos de Azevedo

    Seguindo esse modelo eu consigo paginar o retorno do GET?

    2
    Ações de comentário Permalink
Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _