Hoje vamos falar sobre desenvolvimento de APIs REST com o Talend ESB. Embora o conceito de APIs REST exista há mais de 20 anos e seja a base da web como conhecemos, a ascensão dos aplicativos mobile fez com que esse tema voltasse à popularidade. Além disso, o processo de Transformação Digital que vivenciamos provocou uma maior necessidade por Governança dos Dados e o desenvolvimento de serviços orientados à recursos proporciona uma melhor gestão destes ativos.
As APIs REST facilitam a implementação de um conjunto de ações para operar os ativos de dados denominado como CRUD: Create, Read, Update e Delete. Desta forma, podemos manusear as entidades de negócio como por exemplo uma entidade Cliente ou Fornecedor. Estas ações são geralmente associadas à verbos HTTP já conhecidos por qualquer navegador web: POST, GET, PUT e DELETE. Assim, baseando-se em conceitos tradicionais, a arquitetura destes serviços é simplificada e mais fácil de integrar entre quaisquer aplicações.
Neste artigo vamos demonstrar uma API que representará uma entidade Cliente com uma única operação, que irá receber um nome e produzir uma mensagem de boas vindas. Este é um exemplo básico de como um serviço poderia efetuar a inscrição de um novo usuário ou o login de um existente e, a partir dos argumentos recebidos, retornar uma mensagem para um app ou qualquer tipo de aplicação.
Mão na Massa
Vamos demonstrar como é simples implementar este tipo de APIs REST com o Talend ESB, desenvolvendo uma API simples. Tudo começa com dois componentes essenciais que você sempre irá utilizar para este tipo de desenvolvimento: tRESTRequest e tRESTResponse.
O próximo passo é configurar no componente tRESTRequest o Endpoint que será a URL base do serviço. A partir desta URL é que as aplicações irão interagir com o serviço como se estivessem acessando uma página web, por exemplo:
http://ip_do_servidor/Cliente/
Em seguida realizamos o mapeamento de recursos disponibilizados pela API. Estes recursos são as URLs relativas do serviço e, associadas aos verbos HTTP, irão determinar as operações disponibilizadas pelo serviço. Por exemplo:
GET http://ip_do_servidor/Cliente/Anselmo
GET http://ip_do_servidor/Cliente?nome=Anselmo
POST http://ip_do_servidor/Cliente/
Neste último exemplo, tratando-se de um verbo POST, poderíamos enviar um corpo de mensagem contendo os dados de um Cliente para efetuar seu cadastro e assim escrever em um banco de dados ou na aplicação CRM.
Observe que na imagem acima nós determinamos o Endpoint com a String “Cliente/” e em REST API Mapping adicionamos um mapeamento onde especificamos o campo URI Pattern com o conteúdo “{nome}”. Para cada mapeamento é preciso configurar um schema – que irá determinar os parâmetros que este recurso irá receber – e neste schema nós especificamos uma única coluna que tem o mesmo nome especificado anteriormente em URI Pattern.
Conectando Tudo
Por fim, adicionamos um componente intermediário chamado tXMLMap, que irá mapear os argumentos recebidos pelo componente tRESTRequest (neste caso a coluna “nome”) para o retorno produzido pela API. Em seguida conectamos estes três componentes:
No tXMLMap iremos mapear o nome recebido como parâmetro no tRESTRequest e configurar uma simples mensagem de boas vindas que será enviada ao tRESTResponse. Clique duas vezes no tXMLMap para abrir o mapeamento de colunas. Em seguida, arraste a coluna “nome” do lado esquerdo para o output do lado direito; ao fazer isso o Talend irá lhe “perguntar” como este mapeamento deve ser realizado: como sub-elemento ou como atributo. Selecione a primeira opção (“Create as sub-element of target node“) e então configure a expressão que irá preencher este elemento como abaixo:
Conclusão e testes da API
Isso é basicamente tudo o que você precisa fazer para desenvolver uma API REST com o Talend ESB. Agora podemos executar o job pressionando F6 e ao fazer isso você irá notar que o Talend Studio irá lhe informar qual é o Endpoint do serviço:
Você pode testar a API com o seu navegador preferido. Para isso, utilize como URL o Endpoint informado no Studio ao executar o job e, como configuramos no componente tRESTRequest uma URI relativa denominada “{nome}”, informe também um argumento com o seu nome, por exemplo:
Por fim, isso é só o começo para começar a desenvolver integrações sob um novo paradigma. Espero que tenha lhe ajudado nesse princípio de jornada, e se você quiser saber mais, inscreva-se em nossa newsletter ou entre em contato para falarmos sobre treinamentos.