Como consumir uma API com verbo PATCH usando HttpQuote | Ti Responde 0208

No vídeo de hoje, vamos demonstrar em como consumir uma API do tipo PATCH usando a função HttpQuote.

A dúvida de hoje, nos perguntaram, se seria possível consumir uma api do tipo PATCH, já que a FWRest não possui suporte a esse tipo.

 

Pensando nisso, montamos um exemplo, onde vamos mostrar em como fazer isso, usando a função HttpQuote para consumir no lugar da FWRest.

 

Segue abaixo o vídeo exemplificando:

 

E abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "tlpp-core.th"

//Declaração da namespace
Namespace custom.terminal.youtube

#Define CRLF Chr(13) + Chr(10) //Carriage Return Line Feed

/*/{Protheus.doc} User Function video0208
Exemplo de como consumir uma API do tipo PATCH
@type  Function
@author Atilio
@since 19/09/2024
@example custom.terminal.youtube.u_video0208()
@see https://tdn.totvs.com/display/tec/HTTPQuote
/*/

User Function video0208()
    Local aArea            := FWGetArea() As Array
    Local cApiUrl          := "" As Character
    Local cApiType         := "" As Character
    Local cBody            := "" As Character
    Local cResult          := "" As Character
    Local aHeader          := {} As Array
    Local cHeaderResult    := "" As Character
    Local cMessage         := "" As Character
    Local cUserToken       := "daniel.atilio" As Character
    Local cPassToken       := "tst123" As Character
    Local cBasicToken      := Encode64(cUserToken + ":" + cPassToken) As Character

    //Monta o Body da Requisição
    cBody += '{'
    cBody += '    "grupo":"G002",'
    cBody += '    "proori":"0",'
    cBody += '    "status":"2"'
    cBody += '}'

    //Define o endereço e o tipo da integração
    cApiUrl   := "http://127.0.0.1:8401/rest/WsGrupoProdNov/atualizacao/parcial/unico/"
    cApiType  := "PATCH"

    //Monta o Header da Requisição
    aAdd(aHeader,'User-Agent: Mozilla/4.0 (compatible; Protheus '+GetBuild()+')')
    aAdd(aHeader,'Content-Type: application/json;')
    aAdd(aHeader,'Authorization: Basic ' + cBasicToken)

    //Aciona a requisição da API no tipo PATCH
    cResult := HTTPQuote(;
        cApiUrl,;          //cUrl
        cApiType,;         //cMethod
        ,;                 //cGETParms
        cBody,;            //cPOSTParms
        120,;              //nTimeOut
        aHeader,;          //aHeadStr
        @cHeaderResult;    //cHeaderRet
    )

    //Monta a mensagem para exibir
    cMessage += "Header do Retorno: " + CRLF
    cMessage += cHeaderResult
    cMessage += CRLF + " ------ " + CRLF + CRLF
    cMessage += "Resultado Recebido: " + CRLF
    cMessage += cResult
    ShowLog(cMessage)

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

 

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação