Acessando api REST com Pentaho DI

Olá!

No post “Acessando web services com pentaho DI” expliquei como consultar informações vindas de um web service SOAP utilizando o pentaho DI. Nesse post, vamos criar uma transformação parecida, mas consultando um serviço REST que retorna um JSON. Caso você não esteja familiarizado com a arquitetura REST, recomendo que dê uma olhadinha no post “REST usa JSON e SOAP usa XML, certo?“, aqui mesmo no blog da MATERA.

 

Descrição do cenário

Nesse projeto, vamos acessar um serviço REST para consulta de endereço, dado um CEP, mas dessa vez, a api não será dos correios, e sim um projeto open source disponível nesse link. Nessa api, devemos realizar uma chamada GET informando na própria URL o CEP do endereço desejado. A resposta será um JSON com os dados de logradouro, bairro, cidade, estado etc. Vamos comecar!!

 

Montando a transformação

1 – Vamos começar criando uma nova transformação. Clique no menu “File -> Novo -> Transformação“, ou aperte “Ctrl + N“.

Figura 1 - Nova transformação
Figura 1 – Nova transformação

 

2 – Inclua um componente “Data Grid na área de trabalho da transformação. Para isso, clique na aba “Design no canto superior esquerdo da janela e localize a pasta “Input ou digite no campo “steps o nome “Data Grid“. Arraste o componente para a área de trabalho da transformação(vamos utilizar o “data grid” para incluir dados estáticos para os testes. Em um cenário real, essas informações poderiam vir de um banco de dados, por exemplo).

Figura 2 - Incluindo um data grid
Figura 2 – Incluindo um data grid

 

3 – O componente data grid permite definir um conjunto de colunas e um conjunto de dados para as colunas definidas. Isso será útil para simplificar nossos testes. Dê dois cliques no componente “Data Grid“. Na janela que se abre, inclua uma coluna chamada “cepOrigem” do tipo “String na aba “Meta. Na aba “Data“, define alguns CEPs para realizar a consulta. Aproveite para definir um nome para o componente. Defina algo que indique o que o componente faz, conforme figura 3.

Figura 3 - Componente Data Grid
Figura 3 – Componente Data Grid

 

4 – Inclua agora, na área de trabalho da transformação, um componente “Add constants“, disponível na pasta “Transform“. Como o próprio nome diz, esse componente permite definir um campo com valor fixo. Vamos definir nele a URL do serviço. Dê dois cliques no componente e inclua um campo url do tipo “String“, e defina o valor do campo como “http://correiosapi.apphb.com/cep/“. Aproveite para definir um nome para o componente, conforme figura 4.

Figura 4 - Componente Add Constants
Figura 4 – Componente Add Constants

 

5 – Vamos agora incluir um componente “Calculator“. Esse componente é muito útil, pois com ele é possível realizar operações matemáticas com até 3 campos. O mais interessante é que podemos realizar operações não só com valores numéricos, mas com “Strings” também, isso significa que uma String A + String B resultará na concatenação dos campos A e B. Vamos fazer isso para montar a URL, pois precisamos incluir o CEP do endereço no fim da URL base, mas antes, vamos ligar um elemento ao outro, conforme figura 5. Cuidado, a flecha indica a ordem em que os dados serão tratados, não inverta a ordem.

Figura 5 - Associando componentes
Figura 5 – Associando componentes

 

6 – Agora sim vamos configurar a calculadora. Dê dois cliques no componente “Calculator” e defina um nome para o campo resultante da operação, o cálculo que será executado, no nosso caso “A + B” e os campos envolvidos na operação, no nosso caso, “url” e “cepOrigem”. Aproveite para definir um nome explicativo para o componente (Figura 6).

Figura 6 - Componente Calculadora
Figura 6 – Componente Calculadora

 

7 – Finalmente, vamos incluir na transformação o componente “REST Client“. Associe o componente “Calculator” com o componente recém adicionado e dê dois cliques nele. Na janela que se abre, clique na opção “Accept URL from field?” e selecione o campo da url completa, criada no componente “Calculator“. Deixe a opção “Get Method from field” como “GET“, mude a opção “Application type” para “JSON” e defina um nome para o resultado da consulta na opção “Result field name“. Não esqueça de definir um nome explicativo para o componente.

Figura 7 - Componente REST Client
Figura 7 – Componente REST Client

 

8 – Precisamos agora tratar a resposta da consulta. Inclua um componente “Json Input” na transformação, associe-o ao componente “REST Client” e dê dois cliques para configurá-lo. Na aba “File“, marque a opção “Source is defined in a field?” e selecione o campo de retorno do componente REST na opção “Get source from field“, conforme figura 8.

Figura 8 - Componente Json Input
Figura 8 – Componente Json Input

 

9 – Ainda no componente “Json Input“, clique na aba “Fields“. Aqui vamos criar uma variável para cada atributo de retorno do JSON. Para isso precisaremos indicar os campos seguindo o padrão “JSONPath” descrito nesse link. O retorno da consulta REST é bem simples, por isso, vamos apenas utilizar a notação “$.nomeAtributo” para buscar o atributo diretamente descendente da raiz. Ficará como na figura 9.

Figura 9 - Recuperando dados do Json
Figura 9 – Recuperando dados do Json

 

10 – Agora só precisamos exibir os resultados. Se fosse uma aplicação, poderíamos enviar os dados para um banco de dados ou uma planilha, ou até mesmo incluir outros passos no pentaho para modificar esses dados. No nosso caso vamos apenas exibir os dados retornados no próprio log do pentaho. Inclua o elemento “Write to log“, associe o elemento “Json Input” a ele e dê dois cliques. No campo “Fields“, selecione as variáveis definidas anteriormente no “Json Input“. Não esqueça de colocar um nome para o componente.

Figura 10 - Configurado log
Figura 10 – Configurado log

 

Agora só rodar e ver o resultado. Salve a transformação e clique no botão “Run” ou aperte “F9“. Para visualizar os dados, clique na aba “log” na janela que se abre após o início do processamento, na parte inferior do pentaho.

Figura 11 - Resultado da consulta
Figura 11 – Resultado da consulta

 

Nesse post mostramos que a consulta e manipulação de informações vindas de uma API REST torna-se bastante visual e prática utilizando os componentes “Rest Client” e “Json Input“. Aproveitamos também para explorar outros componentes de manipulação de informações do pentaho DI, como o “Calculator” e “Write to log“. Tente alterar essa transformação mudando o componente de entrada para que busque os ceps de um banco de dados ou de uma planilha, e a saída para um arquivo texto, por exemplo. Explore os diversos componentes que o pentaho DI oferece e aproveite para olhar também os exemplos que vem com o próprio aplicativo. Dessa forma você terá uma visão dos benefícios e limitações dessa ferramenta fantástica.

Até a próxima!

 

Por MARCIA TANIMOTO

Formada em Informática - UEM/Maringá. Analista de Sistemas, apaixonada pela profissão, curiosa e MATERANA de coração.

Postado em: 27 de março de 2017

Confira outros artigos do nosso blog

REST não é JSON

21 de agosto de 2017

Bruno Sofiato

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

JavaScript 6: diferença entre var, let e const

09 de maio de 2017

Otávio Felipe do Prado

Deixe seu comentário