Desenvolvendo API REST/ Upload com o Talend ESB

Desenvolvendo API REST com Talend ESB. Criaremos API Rest com o intuito de realizarmos upload de arquivos em diversos formatos para um repositório pré-definido. Neste Tutorial iremos demonstrar como criar APi Rest , realizar upload de arquivo e personalizar a resposta exibida ao requisitor.

Mão na Massa

Vamos demonstrar como criar uma API Rest simples que carregará um arquivo pelo método POST e salvará em um diretório.  Utilizaremos os componentes tRESTRequest, tjavaRow, tXMLMap,tRESTResponse. Abaixo o passo a passo de como criar este serviço:

1 – Criar um job clicando com o botão direito sobre a pasta da sua escolha ou direto em job Designs.

2- Dar um nome ao job.

3- Carregar os componentes no mapa de trabalho

Pode utilizar a paleta para encontrar os componentes ou digitar o nome na área de trabalho do mapa.

4 – Adicionar os componentes tRESTRequest, tjavaRow, tXMLMap,tRESTResponse.

5 – Configurar o componente tRESTRequest com o Endpoint(URLs de acesso aos serviços). Adotamos com uma boa prática a utilização dos nomes no plural, por indicar que pode haver um conjunto de recursos a essa API, como neste caso utilizamos Upload, mas poderíamos criar um outro recurso chamado de download. Também como boas práticas é adicionar qual é a versão da API, em caso de alteração da API, teríamos que versionar e não alteramos a que já está em produção,  iniciamos com versão 1.0.

Exemplo; “dataexpertz/treinamentos/1.0”

6 – Vamos criar o “Schema” com o nome do parâmetro que iremos chamar em nossa API e com o tipo de dados que desejamos receber. Utilizamos o tipo byte[] por se tratar de um tipo de dado de baixo nível em que poderemos  converter a matriz de bytes novamente no arquivo original.
Após criarmos um paramento (file) e definirmos o type, precisamos definir o tipo de parâmetro no campo comentário (query, form,header,matrix,multipart, e se deixar em branco o default é “path”), neste caso desejamos realizar o upload de um arquivo e adicionamos então o multipart.

Exemplo: Column : file

                    Type: byte[]

                    Comentário: multipart

7 – Em HTTP Verb escolheremos o método HTTP POST, pois é método utilizado junto com o PUT para enviar os dados anexados, neste caso o arquivo na  requisição para armazenamento.

Na URL pattern é o nome do recurso que iremos utilizar, neste caso definimos que o nome do recurso será upload

Em Consumers escolheremos o formato que iremos consumir, ou seja, quais são os formatos que aceitaremos na requisição (XML, Json,Form,Multipart,HTML e any), definimos como any.

Em Produces escolheremos o formato que iremos entregar ao cliente ou seja quais são os formatos que enviaremos no response (XML, Json,HTML e any), definimos como JSON.

8 – Iremos ligar output flow ao próximo componente

9 – No Tjava row iremos primeiro sincronizar os schemas e em seguida gerar o código.

10 – Iremos importar a classe FileOutputStream (import java.io.FileOutputStream;) em Advanced settings. Utilizaremos esta classe para  escrever os dados no destino e neste caso para criar arquivos.

11- Criamos uma variável file do tipo FileOutputStream , onde informaremos  o caminho, nome e tipo do arquivo que serão gravados os dados, em seguida utilizaremos o método write para escrever no arquivo e o método close para fechar a escrita do arquivo e evitar que este fique aberto.
Comentamos output_row.file = input_row.file; “//” por não haver a necessidade de continuarmos a transmitir os dados dos arquivo para o próximo componente.
Mas criamos uma nova coluna output_row.result para exibir no response uma mensagem amigável para o consumidor.

OBS: Se FileOutputStream o booleano for definido para true, os dados serão anexados ao final do arquivo e se for false ira e sobrescrever o arquivo que já existe no diretório.

//Code generate according to input schema and output schema

//output_row.file = input_row.file;

FileOutputStream file = new FileOutputStream(“G:\\DataExpertz\\Treinamentos\\API\\Rest\\Upload\\result\\list_name.csv”,false);

file.write(input_row.file);

file.close();

output_row.result = “Arquivo carregado com sucesso”;

12 –  No tXMLMp iremos criar um output flow chamado out_result .

13- Criar uma coluna chamada body do tipo Document e clicar com botão direto sobre root e em create Sub-Element, dar o nome de result, neste momento criaremos a estrutura do response em XML e que logo após será convertido em Json devido ter escolhido em produces no tRESTRequet como Json.

14 – Arrastar o result em row1 para out_result assim criando um link.

15 – Configuraremos o tRESResponse com type document

16 – Personalizaremos o código HTTP do response que desejamos enviar para o consumidor em caso de sucesso. Utilizaremos o  código HTTP “201 Created” que é comumente utilizado como  código de resposta de sucesso para os HTTP verbs POST e PUT, indica que a requisição foi bem sucedida.

17 – Não desejamos exibir o elemento root e com isso marcamos a caixa Drop JSON Response Root em advanced settings

18 – Passo importante antes de executar o job, vamos verificar se haverá erro de compilação. Para isso clicar em code e verifica se aparecerá marcado em vermelho algum problema com o código criado. Caso não apresente erro , clica novamente em designer

19 – Chegou a hora esperada que é chamar a api e verificar o resultado. Clica em Run e Rodar para executar o job. Aparecerá a mensagem com o caminho de sua API (URL)

20 – Vamos utilizar o Postman para realizar as consultas.

Utilizaremos o verb POST (vide item 7) + URL localhost (http://127.0.0.1:8090/dataexpertz/treinamentos/1.0/upload). Essa é composta por http://127.0.0.1:8090/+ Endpoint (vide item 5)+ URL pattern (vide item 7).
No postman em Body escolheremos for-data em Key digitamos file (vide item 6) e
 logo após escolheremos o arquivo, neste caso temos um arquivo upload_file.csv, por fim clica em  Send

Dados utilizado no arquivo:

id;nome;idade

1;Jully;32

2;patricia;18

3;fernando;45

4;josé;60

Resposta

21 – Verificando o arquivo armazenado na pasta destino

Conclusão

Nesse Tutorial conseguimos transmitir via API rest utilizando HTTP verbs POST um arquivo .csv e armazena-lo em diretório que pré-definimos. Aprendemos alguns conceitos e boas práticas.
Mais esclarecimento do que é uma API Rest , consulte o link abaixo :
https://dataexpertise.com.br/blog/talend/apis-rest-talend-esb/

Download Talend ESB
https://www.talend.com/download/

Leave a Comment

Your email address will not be published. Required fields are marked *