Para codificar em base64 na linguagem M, você pode usar a função Binary.ToText()
com o segundo parâmetro definido como BinaryEncoding.Base64
. Essa função converte um valor binário em uma sequência de caracteres de acordo com o esquema de codificação especificado.
Aqui está um exemplo de como codificar uma string em base64 na linguagem M:
let
texto = "Texto que deseja codificar",
binario = Text.ToBinary(texto),
codificado = Binary.ToText(binario, BinaryEncoding.Base64)
in
codificado
O código acima converte a string "
Texto que deseja codificar"
em um valor binário usando a função Text.ToBinary()
. Em seguida, a função Binary.ToText()
é usada para codificar o valor binário em base64. O resultado é uma sequência de caracteres que representa o valor binário codificado.
Para descodificar uma string em base64 de volta para sua forma original, você pode usar a função Text.FromBinary()
com o segundo parâmetro definido como BinaryEncoding.Base64
. Aqui está um exemplo:
let
codificado = "VGV4dG8gcXVlIGRlc2VqYSBjcmlwdG9ncmFmYXI=",
binario = Binary.FromText(codificado, BinaryEncoding.Base64),
decodificado = Text.FromBinary(binario)
in
decodificado
O código acima converte a string "VGV4dG8gcXVlIGRlc2VqYSBjcmlwdG9ncmFmYXI="
em um valor binário usando a função Binary.FromText()
com o segundo parâmetro definido como BinaryEncoding.Base64
. Em seguida, a função Text.FromBinary()
é usada para decodificar o valor binário de volta para sua forma original. O resultado é a string “Texto que deseja codificar"
.
Como montar um cabeçalho Authorization de uma requisição de API Basic Auth com codificação
Neste exemplo abaixo você pode compreender melhor a forma de estruturar uma requisição REST e também como você montar cabeçalhos de requisições REST Basic Auth.
Isso pode te ajudar a colocar os dados mais dinâmicos, como um campo ou parâmetro para que o usuário possa informar o usuário de API e também a senha. Desta forma com apenas um aplicação você pode atender vários usuários.
O cabeçalho Authorization
de uma requisição Basic Auth é formado pelo nome de usuário e a senha com “:” (dois pontos) e codificado em base64. Como exemplo: base64(usuario:senha)
, que se tornará dXN1YXJpbzpzZW5oYQ==
; Vamos ver abaixo uma forma de resolver e dinamizar isto no código abaixo.
let
Source = UsuarioAPI & ":" & SenhaAPI,
Bytes = Text.ToBinary(Source),
HashBasic = Binary.ToText(Bytes, BinaryEncoding.Base64),
Fonte = Json.Document(
Web.Contents("https://api.dominio.com.br/public/api/customers,
[
Headers =[
#"Content-type"="application/json",
#"Authorization"="Basic " & HashBasic]
]
)
),
data = Fonte[data]
in
data
Esta é a vantagem do uso da linguagem M, a possibilidade de dinamizar campos como “UsuarioAPI” e “SenhaAPI” por meio de parâmetros no Power Query, tornando mais fácil a entrada desses valores pelo usuário final. Além disso, é possível realizar a conversão desses valores para base64 com facilidade, garantindo a segurança na transmissão de dados.
Dominar conceitos básicos da linguagem M pode trazer muitas facilidades no desenvolvimento de soluções tanto no Power BI quanto no Excel, permitindo uma maior automação de tarefas e otimização de processos.
Pingback: Como fazer paginação de API REST no Power Query - Misael Soares
Base 64 não é criptografia, mas sim de “encoding”.
https://en.wikipedia.org/wiki/Base64?wprov=sfla1
Obrigado pelo comentário!