Páginas filhas
  • FWHttpEncode

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Descrição:

Função que trata corretamente o retorno de requisições REST Protheus, devolvendo o encode correto para strings que possam possuir caracteres diferentes entre o utilizado no sistema e o UTF-8, por exemplo.

Importante: Nem toda string necessita realizar o tratamento de decodeencode. O uso ou não deve ser avaliado pelo desenvolvedor. 

Aviso

Disponível a partir da lib label 20201123

Sintaxe:

FWHttpEncode( <cString> )

Parâmetros:

NomeTipoDescriçãoObrigatório
cStringCaracterString que receberá tratamento para ser codificada no encode correto na resposta de uma requisiçãoX

Retorno:

cString → Caracter - String no encode correto da requisição

Exemplo:

O exemplo abaixo mostra os possíveis problemas ao não chamar a função encodeutf8 nos fontes de serviços REST e possíveis problemas ao chamar a mesma.


Bloco de código
languagejs
titleFWHasGed
#Include "totvs.ch"
#Include "restful.ch"

//-------------------------------------------------------------------
/*/{Protheus.doc} MeuTeste
Serviço REST de exemplo que mostra como tratar corretamente
as respostas de mensagem.

@author  framework
@since   01/10/2021
@version 1.0
/*/
//-------------------------------------------------------------------
wsrestful meuteste description 'Classe teste de rest'

Wsdata Id as character 

wsmethod GET teste1 description 'teste1' wssyntax "/api/framework/v1/meuteste/teste1/{id}";
path "/api/framework/v1/meuteste/teste1/{id}"

END WSRESTFUL

//-------------------------------------------------------------------
/*/{Protheus.doc} Teste1
Serviço (get) para testes de retorno das requisições tratando encode corretamente
No postman ou outro tipo de app para testes, podemos fazer da seguinte maneira:
Ao passar o pathparam id= 1, estamos dizendo para o sistema que não vamos fazer nada dentro do fonte
Ao passar o pathparam id=2, vamos dizer para o nosso fonte fazer encodeutf-8 na mão
ao passar o pathparam id=3, vamos dizer ao nosso fonte para fazer o tratamento correto via lib. 
Desta forma, não importa se o header Accept-Charset: UTF-8 for enviado, o tratamento sempre é o correto.

@author  framework
@since   01/10/2021
@version 1.0
/*/
//-------------------------------------------------------------------
wsmethod GET teste1 WSSERVICE meuteste

Local cReturn as character 

cReturn := "imã"

//não quero que faça encode. Aqui só vai retornar correto se o client enviar o header 
//Accept-Charset: UTF-8
If self:id == '1' 
    Conout('faz nada')

//Quero que faça encode. Aqui só vai retornar correto se o client NÃO enviar o header 
//Accept-Charset: UTF-8
ElseIf self:id == '2'
    cReturn := EncodeUtf8(cReturn)

//Quero que a função de lib avalie o encode. Aqui sempre vai retonar certo, independente do
//Accept-Charset
ElseIf self:id == '3'//faz o processo certo
    cReturn := FWhttpEncodeFWHttpEncode(cReturn)
Endif 

Self:SetResponse(cReturn)

Return .T. 



Informações

Essa função está disponível na lib 20210517 ou superior


Templatedocumentos


HTML
<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}

.aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { 
	background: #FF9900; !important 
}

.menu-item.active-tab { 
	border-bottom: none !important; 
}

</style>