Ajude o site desativando o bloqueador de anúncio
Cabeçalho

ADVPL - Action get REST ADVPL vs action get REST TLPP

Autor: Eurai Criado: 14/08/2021 Atualizado: 15/11/2025 ADVPL
Postagem

 

Exemplo de Action no ADVPL e no TL++

Neste artigo, apresento um exemplo simples de criação de um action REST tanto em ADVPL quanto em TL++ (REST 2.0). A ideia é ilustrar como capturar parâmetros da URL, validar os dados e retornar um JSON.


🚀 Exemplo no ADVPL

#INCLUDE "TOTVS.CH"
#INCLUDE 'RESTFUL.CH'

WSRESTFUL uDesenv DESCRIPTION EncodeUTF8("XXXX")
    WSMETHOD GET rgbToI DESCRIPTION EncodeUTF8("RGB to Int") PATH "/uDesenv/{rgb}"
END WSRESTFUL

WSMETHOD GET rgbToI WSSERVICE uDesenv

Local lRet          := .T.
Local aArea         := GetArea()
Local oResponse     := JsonObject():New()
Local cError        := ''
Local bErrorBlock   := ErrorBlock( { |e| cError := e:ErrorStack, Break(e) } )

Self:SetContentType("application/json")

Begin Sequence

    If Len(::aURLParms) < 02
        cError := 'Envie o parâmetro RGB'
        Break
    EndIf

    aColor := StrtoKarr2(::aURLParms[02], '-', .T.)
    If Len(aColor) < 3
        cError := 'Cor enviada inválida'
        Break
    EndIf

    oResponse["int"] := 1257423

    ::SetResponse( FWJsonSerialize(oResponse, .F., .F., .T.) )

    ErrorBlock(bErrorBlock)
End Sequence

If !Empty(cError)
    conout(cError)
    SetRestFault(400, EncodeUTF8(cError))
    lRet := .F.
EndIf

RestArea(aArea)
Return( lRet )

 

🟦 Exemplo no TLPP (REST 2.0)

#INCLUDE "tlpp-core.th"
#INCLUDE "tlpp-rest.th"

@Get("/uDesenv/rgbToI/:rgb")
User Function GETrgbToI()

Local aArea        := GetArea()
Local cError       := ''
Local bErrorBlock  := ErrorBlock( { |e| cError := e:ErrorStack, Break(e) } )
Local oResponse    := JsonObject():New()

Begin Sequence

    jPathParans := oRest:getPathParamsRequest()

    If jPathParans == Nil
        cError := 'Envie o parâmetro RGB'
        Break
    EndIf

    If Empty(jPathParans['rgb'])
        cError := 'Envie o parâmetro RGB'
        Break
    EndIf

    aColor := StrtoKarr2(jPathParans['rgb'], '-', .T.)

    If Len(aColor) < 3
        cError := 'Cor enviada inválida'
        Break
    EndIf

    oResponse["int"] := 1257423

    oRest:setResponse( FWJsonSerialize(oResponse, .F., .F., .T.) )

    ErrorBlock(bErrorBlock)
End Sequence

If !Empty(cError)
    conout(cError)
    oResponse["error"] := cError
    oRest:setStatusCode(400)
    oRest:setFault( FWJsonSerialize(oResponse, .F., .F., .T.) )
EndIf

RestArea(aArea)
Return( Nil )

 

URL para teste:
{{SERVER_REST}}/rUDTOOLS/rgbToI/125-125-125?ni=1&page=2

 

📢 Gostou?

Compartilhe com seus amigos e deixe um comentário! 😎
Um abraço, e até a próxima! 👋

ASSINE A NEWSLETTER

Cadastrando...

PIX uDesenv

PIX QR Code para depósito

Clique para doar

Parceiros

Tudo em ADVPL - Blog parceiro

Blog ADVPL