Olá, Amigos. Tranquilos?

No artigo de hoje, vamos mergulhar na integração de sistemas e aprender a implementar o verbo HTTP PUT utilizando a poderosa classe ADVPL FWRest. Este verbo é fundamental para a atualização de recursos em um serviço RESTful, garantindo que as modificações sejam enviadas de forma eficiente e padronizada.

📘 O Que é o Verbo PUT e Por Que Usar?

Enquanto o verbo POST é tipicamente usado para criar um novo recurso e o GET para consultar, o PUT é reservado para substituir ou atualizar um recurso já existente em um servidor.

Quando usamos o PUT via FWRest, estamos dizendo ao endpoint de destino: "Eu estou enviando o corpo desta requisição para substituir (ou atualizar completamente) o recurso X no endereço Y."

⚙️ Segue abaixo o fonte mostrando:

/*/{Protheus.doc} zTAPI001
(Envio de dados usando PUT e POST)
@type user function
@author Hamir
@since 21/11/2025
@version version
/*/
User Function zTAPI001()
    //Local cServer   := "10.172.22.122"                               // URL (IP) DO SERVIDOR
    //Local cPort     := "5085"                                        // PORTA DO SERVIÇO REST
    Local cURI      := "https://pedmais-dev.weduu.com/api" // URI DO SERVIÇO REST
    //Local cURI      := "http://" + cServer + ":" + (cPort + "/rest") // URI DO SERVIÇO REST
    Local cResource := "/mpr/upload_customers"                  // RECURSO A SER CONSUMIDO
    Local oRest     := FwRest():New(cURI)         
    Local cToken    := GeraWDToken()                   // CLIENTE PARA CONSUMO REST
    Local aHeader   := {} 
    Local cBody     := GetJson()         

    // PREENCHE CABEÇALHO DA REQUISIÇÃO
   // AAdd(aHeader, "Content-Type: application/json; charset=UTF-8")
    AAdd(aHeader, "Accept: application/json")
    AAdd(aHeader, "Authorization: Bearer " + cToken)
    AAdd(aHeader, "Content-Type: application/json; charset=UTF-8")
    //AAdd(aHeader, "User-Agent: Chrome/65.0 (compatible; Protheus " + GetBuild() + ")")

    // INFORMA O RECURSO E INSERE O JSON NO CORPO (BODY) DA REQUISIÇÃO
    oRest:SetPath(cResource)
    //oRest:SetPostParams(cBody)

    // REALIZA O MÉTODO POST E VALIDA O RETORNO
    //If (oRest:Post(aHeader)) => OK
    If (oRest:Put(aHeader,cBody))
        ConOut("POST: " + oRest:GetResult())
    Else
        ConOut("POST: " + oRest:GetLastError())
    EndIf
Return (NIL)

// CRIA O JSON QUE SERÁ ENVIADO NO CORPO (BODY) DA REQUISIÇÃO
Static Function GetJson()
    Local cBody := ""

		cBody += ' { ' 
		cBody += ' "cnpj":            "05212086000187", '                 
		cBody += ' "cd_customer":     "000001", '    
		cBody += ' "note":            "A E B RAPOSO E CIA LTDA", ' 
		cBody += ' "name":            "A E B RAPOSO E CIA LTDA", ' 
		cBody += ' "uf":              "SP", ' 
		cBody += ' "shipping_type":   "C", ' 
		cBody += ' "payment_terms_1": "004", ' 
		cBody += ' "payment_type_id": "237-1221-0412023", '          
		cBody += ' "email":           "[email protected]" ' 
		cBody += ' } ' 
Return cBody 

📘 Pontos de Atenção:

O método PUT recebe parâmetro direto na função oRest:Put(aHeader,cBody)

Pois o método POST é diferente a implementação.

📘 Links:

Comente o que achou

Receba nossos novos artigos

Baixe nosso novo e-book Como o SQL Pode Mudar Sua Vida Em 04 Passos

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

hamirdhanquer
hamirdhanquer

Olá! Meu nome é Hamir Dhanquer. Atualmente trabalho como: Analista de Sistemas. Meu foco com esse blog é justamente aprender tecnologias e divulgar o que estou aprendendo. Espero que nesse processo posso ajudar você também! Segue abaixo meus contatos: https://www.linkedin.com/in/hamir-dhanquer-costa-noleto-06795922/ https://github.com/HamirDhanquer

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress