Integração de sistemas utilizando Web Services do tipo REST Jhonatan Wilson Aparecido Garbo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí – PR – Brasil [email protected] [email protected] Resumo: Este artigo constitui em uma descrição das funcionalidades do web services, onde será abordado a importância e motivo de se utilizar um web services, e apresentará o desenvolvimento do mesmo, utilizando a linguagem Java e o NetBeans como IDE para desenvolve-lo. O Projeto desenvolvido é uma aplicação simples, para demonstrar o funcionamento do web services. 1. Introdução O WS (Web Services) foi criado para construir aplicações que são serviços na internet, ele tem a função de chamar métodos usando XML, essa tecnologia é ideal para comunicação entre sistemas. Essa comunicação entre os serviços é padronizada, fazendo com que seja independente a escolha de plataforma e de linguagem [Tutorial, 2010]. De forma genérica, pode-se dizer que os WS são uma tecnologia de integração de sistemas empregada principalmente em ambientes heterogêneos. Isso quer dizer que utilizando essa tecnologia, podemos desenvolver softwares ou componentes de software capazes de interagir, seja enviando ou recebendo informações, com outros softwares, não importando a linguagem de programação em que estes foram desenvolvidos, o sistema operacional em que rodam e o hardware que é utilizado [Gomes, 2014]. Existem dois padrões de desenvolvimento de web services, um é o SOAP (Simple Object Acces Protocol) que é baseado no protocolo XML e o outro é o REST (Representational State Transfer) ou RESTfull que utiliza unicamente o protocolo HTTP. O objetivo deste artigo é descrever os dois padrões de criação de um Web Service, falando as suas vantagens e desvantagens, e desenvolver um pequeno Web Service utilizando o NetBeans como IDE de desenvolvimento, e a linguagem de programação Java e o GlassFish como servidor. 2. Metodologia Para este trabalho foi realizada extensa pesquisas em materiais como artigos, vídeos, livro e sites da Internet. O projeto apresentado foi criado no propósito de demostrar as funcionalidades de um web services. 3. Desenvolvimento 3.1. Web services SOAP SOAP é um protocolo-padrão para transmissão de dados na arquitetura de web services criado pelo W3C, esse protocolo é baseado no XML e segue o modelo de “REQUESTRESPONSE” do HTTP. Dentro da estrutura do WS temos um arquivo do tipo XML chamado WSDL (Web Services Description Language), cuja finalidade é descrever detalhadamente um web services. Essa descrição são as operações que o WS vai executar e o formato de entrada e saída de cada operação. O WSDL pode ficar armazenado no provedor de WS quanto no UDDI [Gomes, 2014]. O UDDI(Universal Description, Discovery and Integration) é o mecanismo que atende tanto o cliente quanto o provedor, ele tem o objetivo de fornecer ao provedor meios para que os WS sejam registrados e publicados, assim permite que o WS sejam pesquisados e localizados pelos clientes [Gomes, 2014]. Provedor de web services é o componente responsável em armazenar o WS ele pode ser um servidor de aplicação como o Glassfish ou um web container como o TomCat, um software que consumirá o WS é chamado de Cliente, pois é ele que utilizara as operações disponibilizadas por um determinado WS [Gomes, 2014]. A figura 1 mostra o funcionamento de uma chamada ao web services SOAP e os componentes envolvidos. Figura 1- Arquitetura para web services SOAP criada pela W3C. Fonte: Daniel Adorno Gomes (2014) – Web Services SOAP em JAVA. 3.2. Web services REST Rest é um padrão para construção de web services que faz unicamente o uso do protocolo HTTP para comunicação [Granero, 2008]. O REST possui um conjunto de operações que se aplicam a todos os recursos de informação, geralmente elas são usadas com operações CRUD para a persistência de dados, GET, POST, PUT e DELETE são as mais importantes. GET - usado para recuperar dados POST - para acrescentar dados no servidor PUT - Usado para inserções e atualizações DELETE - Usado para apagar dados 4. Comparativo entre o SOAP e o REST Esse comparativo foi feito levando em consideração respectivamente que um é um padrão arquitetural e o outro é um conjunto de protocolos e escolhido alguns tópicos importantes para a identificação dos padrões, a Tabela 1 mostra as funcionalidades que cada padrão apresenta [Bigolin, 2012]. Tabela 1- Comparativo entre os padrões de desenvolvimento de Web Services SOAP e REST. Fonte: http://saloon.inf.ufrgs.br/twikidata/Disciplinas/CMP167/TF12MarcioBigolin/Textofinal.pdf, (2012). 5. Desenvolvimento de Web Services Utilizando o padrão REST Para demostrar um WS REST, foi desenvolvido um projeto, onde sua função é buscar uma lista de cidades dentro de um banco de dados. O projeto utilizou as tecnologias descritas na Tabela 2. Tabela 2. Tecnologias utilizadas no trabalho Tecnologia Java Responsabilidade Linguagem de programação Net Beans Ferramenta de desenvolvimento GlassFish Servidor de aplicação Oracle 10g Express Banco de dados A figura 2 mostra a estrutura do projeto, onde foi dividido em quatro pacotes: entidade, dao, controle e serviços. Entidades: é onde fica a classe que contém os atributos das tabelas em banco de dados. DAO: é a onde fica as configurações de conexão com o banco de dados. Controle: é onde está a classe que faz as intermediações entre as classes do pacote dao e serviço. Serviços: é onde fica os serviços que poder ser executados pelo web services. Figura 2 – Estrutura do projeto 5.1. Serviço REST Para criar um serviço, foi utilizado algumas annotations como: @GET – define o tipo de operação GET @Path – define o caminho do serviço @Produces – define os formatos de dados de retorno A figura 3 mostra o serviço do tipo GET que irá retornar uma lista de Cidades no formato json e o caminho de identificação é “listarTodos”. Figura 3 – Serviço listarTodos 5.2. Utilizando Web Services Para testar o projeto, foi preciso clicar com o botão direito sobre o projeto e clicar na opção “Testar Web Service RESTful”, que irá abrir uma página no navegador com os serviços criados para testar. Na página do navegador do lado esquerdo mostra os serviços disponíveis no WS, os nomes dos serviços é o mesmo que foi digitado na annotation @Path, e no lado direito terá uma combo onde listará os tipos de retorno que terá os serviços e logo abaixo terá um painel que trará os resultados do serviço. A figura 4 mostra a página do navegador onde foi feito o teste do serviço listaTodos, este serviço buscou no banco de dados as cidades e retornou uma lista de cidades no formato json. Figura 4 - Tela de Teste do Web Service REST 6. Considerações finais O Web Service é muito importante para a integração de sistemas, e está sendo muito utilizado hoje em dia, pois consegue integrar sistemas atuais com sistemas mais antigos. Os dois padrões existentes são equivalentes, pois dependendo da situação pode ser melhor usar um ou outro. O SOAP é mais utilizado em casos mais complexos pois ele tem um padrão de desenvolvimento já o REST é utilizado em casos que necessita de performance pois ele é mais ágil e fácil de implementar. Este Artigo apresentou o desenvolvimento de um web services REST, que possui um serviço que busca informações em banco de dados e retorna o resultado, com isso poderia ser criado um cliente em qualquer linguagem que utilizaria a URI desse WS para poder localizar o serviço, e assim poderia ter acesso a lista de cidades. Esse projeto de WS desenvolvido será melhorado para ser utilizado no projeto final de conclusão de curso, onde o WS fará a integração de um sistema móvel desenvolvido em android, com um sistema web desenvolvido em java. 7. Referências Tutoriais, A. (2010) Web Services. Construindo, disponibilizando e acessando Web Services via J2SE e J2ME. Disponível em http://javafree.uol.com.br/artigo/871485 /Web-Services-Construindo-disponibilizando-e-acessando-Web-Services-via-J2SE-eJ2ME.html#ixzz30bIbcqbs. Acessado em 15/05/14. Gomes, D. (2014) Web Services SOAP em Java. ed São Paulo: Novatec Editora Ltda. Granero, F.(2008) Conhecendo REST . Disponível em http://flaviogranero.com/blog/conhecendo-rest. Acessado em: 17/07/2015 Bigolin, M. (2012) REST x SOAP Análise e implementação de web services. Disponível em http://saloon.inf.ufrgs.br/twiki-data/Disciplinas/CMP167/TF12Marcio Bigolin/Textofinal.pdf acessado em: 19/07/2015.