Primeiros Passos
Módulo 6: Melhores Práticas
Transformação com Go Template
16 min
introdução nesta documentação, mostramos como usar go template para transformar dados diretamente nos conectores da fluid, com foco na sintaxe v3 use o template para montar corpos de requisição, headers, partes de arquivos e quaisquer strings dinâmicas do seu fluxo para fundamentos de v3 (de onde vêm os dados no template), consulte o guia oficial de migração docid 7dfxtaaavufsisw228yqd como a v3 organiza os dados no template na v3, os dados ficam disponíveis nas seguintes raízes entrada do fluxo (webhook/evento/teste) {{ input body }} – json do payload de entrada {{ input headers }} – headers do disparo {{ input query params }} – query params do disparo resultado de passos do fluxo {{ steps \<nome do passo> body }} – body retornado pelo passo {{ steps \<nome do passo> headers }} – headers retornados {{ steps \<nome do passo> query params }} – query params usados/derivados antes (v2) usava se {{ state }} agora (v3), use {{ input }} e {{ steps }} exemplos oficiais no guia de migração funcionalidades o playground do go template oferece uma gama de funcionalidades para facilitar o desenvolvimento e teste de templates, incluindo edição de templates permite aos usuários escrever e editar templates go de maneira intuitiva e fácil visualização de resultados após a execução do template, o playground exibe o resultado gerado com base nos dados de entrada fornecidos depuração interativa facilita a identificação e correção de erros no template, fornecendo mensagens de erro detalhadas e sugestões de correção suporte a bibliotecas externas permite a utilização de bibliotecas externas, como a biblioteca spring functions (sprig), expandindo as funcionalidades disponíveis nos templates utilização para utilizar o playground do go template, siga estas etapas acesse o playground do go template através do seguinte link https //repeatit io/ na interface do playground, você encontrará um editor de texto onde poderá escrever seu template go caso deseje utilizar funções da biblioteca spring functions (sprig), consulte a documentação oficial da biblioteca para conhecer as funções disponíveis e sua sintaxe correta https //masterminds github io/sprig/ após escrever o template, clique no botão "run" para executá lo o playground exibirá o resultado gerado com base nos dados de entrada fornecidos se houver erros durante a execução do template, o playground fornecerá mensagens de erro detalhadas para auxiliá lo na depuração faça os ajustes necessários no template e repita o processo até alcançar o resultado desejado exemplo de uso uma dica para ver tudo que está disponível no input ou steps durante determinada execução do fluxo é logar a raiz com {{ | tojson}}} exemplos rápidos 1\) lendo campos do payload de entrada {{ input body payload campo 1 }} headers e query params do disparo {{ input headers | tojson }} {{ input query params cod cliente }} 2\) usando o resultado de um passo anterior suponha um passo chamado busca cliente que retornou { "id" 10, "nome" "ana", "status" "ativo" } template (v3) {{ $c = steps busca cliente body }} { "clienteid" {{ $c id }}, "nome" "{{ $c nome }}", "ativo" "{{ eq $c status "ativo" }}" } 3\) acessando chaves com hífen ou maiúsculas use index quando houver hífen, espaços ou capitalização específica {{ index input headers "content type" }} {{ index steps busca produtos body "itens vendidos" }} mais exemplos na faq docs fluidapi io 4\) compondo dados de múltiplos passos {{ $cli = steps busca cliente body }} {{ $ped = steps lista pedidos body }} { "cliente" { "id" {{ $cli id }}, "nome" "{{ $cli nome }}" }, "primeiropedido" {{ index $ped pedidos 0 | tojson }} } 5\) montando combinações com pipes e funções {{ $email = input body contato email | tolower }} {{ $slug = ( input body nome) | toslug }} { "email" "{{ $email }}", "slug" "{{ $slug }}" } exemplo completo do input ao template entrada (payload do disparo) { "payload campo 1" "valor do payload de entrada", "payload campo 2" { "msg" "valor do payload de entrada" } } resposta de um passo passo 1 { "campo 1" "resultado do campo 1", "campo 2" "resultado do campo 2" } template (v3) {{ $in = input body }} {{ $p1 = steps passo 1 body }} { "frominput" "{{ $in payload campo 1 }} {{ $in payload campo 2 msg }}", "fromstep" "{{ $p1 campo 1 }} {{ $p1 campo 2 }}" } resultado { "frominput" "valor do payload de entrada valor do payload de entrada", "fromstep" "resultado do campo 1 resultado do campo 2" } boas práticas defina variáveis ({{$x = }}) para reuso e legibilidade use index para chaves com hífen/espacos e para acessar arrays por índice serialize trechos com tojson quando a api esperar objetos/arrays inline em erros por campo ausente, valide a origem dos dados e a sintaxe v3 (guia de migração) conclusão o playground do go template é uma ferramenta valiosa para simplificar o desenvolvimento e teste de templates em nossos conectores fluid ao utilizar este recurso, os desenvolvedores podem iterar rapidamente na criação e depuração de templates, garantindo uma configuração precisa e eficiente dos dados nos fluxos de trabalho da fluid não hesite em explorar todas as funcionalidades oferecidas pelo playground do go template para melhorar sua produtividade e eficácia na criação de templates