You are on page 1of 21

Mini-curso

WS com REST em JAVA Web

Formao JAVA WS 40h Edjalma Queiroz, Msc

Pauta

Introduo

O que REST

Fundamentos REST

Implementao de Aplicaes prtica

Formao JAVA WS 40h Edjalma Queiroz, Msc

Introduo

Interoperabilidade entre sistemas

Fornecimento de Servio

Backup, e-mail, storage, converso de arquivos, busca de


informaes, processamento de imagens, dentre outras
99% dos casos esto se referindo a WS
99% destes esto se referindo a SOAP (Simple Object Access
Protocol)

Servios da web com REST


Formao JAVA WS 40h Edjalma Queiroz, Msc

O que REST?

REpresentational State Transfer

Nova possibilidade para a criao de web services

Difere do SOAP por conta da utilizao semntica dos mtodos HTTP


(GET, POST, PUT e DELETE)
Difere do SOAP pela leveza dos pacotes transmitidos na rede e na
simplicidade fazendo desnecessria a criao de camadas (layers)
intermedirias para encapsular os dados
Devido a isso o REST vem ganhando espao e tm sido utilizados por
gigantes como Google, Facebook, Yahoo!, Amazon, eBay, Microsoft,
dentre outros
Formao JAVA WS 40h Edjalma Queiroz, Msc

Como funciona?

No mundo REST, uma requisio HTTP equivalente a uma chamada de


um mtodo (operao/requisio) em um objeto (recurso) residente no
servidor.
Caractersticas principais das requisies REST

HTTP utilizado para determinar a operao a ser realizada em um determinado


recurso. Geralmente utiliza-se GET para recuperar e POST para criar, PUT para
alterar e DELETE para apagar.

O recurso por sua vez indicado na URL de requisio

Parmetros podem ser passados na prpria URL e/ou no corpo na requisio

Os tipos de dados utilizados na requisio e na resposta devem ser acordados


entre o servidor e o(s) cliente(s). JSON e XML esto entre os tipos mais utilizados.

Formao JAVA WS 40h Edjalma Queiroz, Msc

Entendendo melhor
(GET)

Vamos imaginar um exemplo de um servio de bookmark, onde o usurio pode guardar seus links favoritos

Suponha que este esteja localizado na URL http://mybookmarks.com.br

Para recuperarmos a lista de todos os bookmarks, pensando segundo filosofia REST, teramos que utilizar
o mtodo HTTP GET na URL que representa a lista. Por exemplo: GET
http://mybookmarks.com.br/bookmarks
A resposta seria algo do tipo:

<bookmarks>

<bookmark>

<id>1</id>

<title>Google</title>

<url>http://google.com</url>

</bookmark>

<bookmark></bookmark>

</bookmarks>

Formao JAVA WS 40h Edjalma Queiroz, Msc

Entendo melhor
(retorno XML)

Lembrando que o formato, XML no exemplo, livre e


definido pelo provedor do servio. Caso esse mesmo
servio fornecesse a sada em JSON, o resultado da
requisio que fizemos seria algo como:
[
{id : 1, title : Google, url : http://google.com },
{id : 1, title : Yahoo!, url : http://yahoo.com }
]
Formao JAVA WS 40h Edjalma Queiroz, Msc

...Entendendo melhor
(retorno especfico)

Se ao invs da lista, quisssemos recuperar apenas um


bookmark especfico, poderamos utilizar o HTTP GET para
uma URL que representasse esse nico registro, por
exemplo:

GET http://mybookmarks.com/bookmarks/13
ou

GET http://mybookmarks.com/bookmarks?id=13

Formao JAVA WS 40h Edjalma Queiroz, Msc

Entendendo melhor
(POST)

Vale ressaltar que o modelo REST no impe o formato da URL,


deixando isso a cargo de quem prov o servio. A nica
recomendao que se use uma URL que identifique, de forma clara
e nica, o recurso que est sendo acessado.
Por sua vez, se quisssemos incluir um novo bookmark,
provavelmente iramos utilizar a mesma URL da listagem, porm com
o mtodo HTTP POST e informaramos os dados do objeto novo no
corpo da requisio. Vejamos um exemplo:

POST http://mybookmarks.com/bookmarks

{title : Google, url : http://google.com}


Formao JAVA WS 40h Edjalma Queiroz, Msc

Entendendo melhor
(PUT e DELETE)

Seguindo a mesma linha de raciocnio, se quisssemos alterar um


registro existente, poderamos utilizar o mtodo HTTP PUT juntamente
com a URL do item especfico que desejamos alterar. Por exemplo:

PUT http://mybookmarks.com/bookmarks/1

{title : Google Brasil, url : http://www.google.com.br}

E da mesma forma, se quisssemos remover um registro, bastaria


enviar uma requisio do tipo HTTP DELETE para a URL
correspondente ao item a ser removido. A requisio ficaria parecida
com a seguinte:

DELETE http://mybookmarks.com/bookmarks/
Formao JAVA WS 40h Edjalma Queiroz, Msc

10

Especificao JAX-RS
(Java API for RESTful Web Services)

Formao JAVA WS 40h Edjalma Queiroz, Msc

11

Implementao da Especificao
(Jersey)
Existem outras implementaes:

Apache CFX, RESTEasy, Restlet, dentre outros;

Formao JAVA WS 40h Edjalma Queiroz, Msc

12

Exemplo prtico
(A famosa Agenda de Contatos)

Formao JAVA WS 40h Edjalma Queiroz, Msc

13

Configurando o ambiente de
Desenvolvimento

Eclipse com plugin do MAVEN2

Servidor de Aplicao Apache Tomcat 7


Uma vez que estamos falando de servio, precisaremos criar alm do servio, propriamente dito, um ou
mais clientes para testar esses servios. Sendo assim, para construir e testar o nosso exemplo, criaremos
os seguintes projetos:

contacts-api: Projeto Java simples que ir conter os tipos bsicos (beans) utilizados pelo nosso servio;
contacts: Projeto web que far uso das bibliotecas do Jersey para criar o servio REST. Esse o nosso
principal projeto, pois tratar do servio em si. Nele definiremos os mtodos que o servio ir oferecer, os
tipos de dados trafegados nas requisies, bem como o formato de URL que o servio utilizar;
contacts-html-client: Projeto web que conter a interface grfica HTML + JavaScript. Com esse projeto
teremos um cliente visual, no Java, para o nosso servio;
contacts-client: Projeto Java simples que servir para testar a API cliente da JAX-RS por meio do
console. Nesse projeto veremos como chamar nosso servio a partir de uma aplicao Java.

Formao JAVA WS 40h Edjalma Queiroz, Msc

14

Projeto contact-api

Para criar esse projeto, utilize a opo File > New > Other...
do Eclipse e selecione Maven > Maven Project. Em
seguida, escolha o arqutipo maven-archetype-quickstart.
Digite br.com.senai no campo Group ID, contacts-api em
Artifact Id e clique em Finish para criar o projeto. Feito isso,
no ser necessria nenhuma alterao no arquivo
pom.xml do mesmo, uma vez que este no ter nenhuma
dependncia de biblioteca adicional ou framework.
Ver classes do projeto no material de apoio
Formao JAVA WS 40h Edjalma Queiroz, Msc

15

O projeto Contacts

Agora sim vamos criar nosso servio REST. Para isso, ser preciso criar um projeto web utilizando o plugin
do Maven. Sendo assim, escolha a opo File > New > Other... e selecione Maven > Maven Project. Desta
vez escolha o arqutipo maven-arquetype-webapp. Digite br.com.senai no campo Group ID, contacts em
Artifact Id e clique em Finish para criar o projeto.
Uma vez com o projeto criado, preciso indicar ao Maven as dependncias que utilizaremos. Nesse caso,
iremos adicionar uma dependncia para o nosso projeto contacts-api, para enxergarmos os beans que
criamos, assim como para as classes do Jersey. Portanto, iremos alterar a seo <dependencies> do
arquivo pom.xml de acordo com o contedo mostrado no material de apoio.
Como podemos observar, a primeira dependncia da verso 0.0.1-SNAPSHOT do projeto contacts-api, ou
seja, do projeto que criamos com os beans da aplicao. Em seguida temos duas dependncias do Jersey.

Uma do servlet responsvel por tratar as requisies e mape-las nos mtodos da nossa classe de servio, que
criaremos em breve, de acordo com a abordagem REST;

E a outra se trata do framework MOXy, que ser utilizado para serializao


dos objetos Java no formato JSON.

Ver codigo do projeto no material de apoio

Formao JAVA WS 40h Edjalma Queiroz, Msc

16

Modelo

Formao JAVA WS 40h Edjalma Queiroz, Msc

17

O projeto de contacts-prime-client

Projeto com uma arquitetura robusta e com ecosistema


completo para desenvolvimento de soluo corporativa
Os prximos Slides demonstram como criar este projeto no
eclipse.
Ver material de apoio para cdigos fontes

Formao JAVA WS 40h Edjalma Queiroz, Msc

18

Projeto Web com primefaces

Formao JAVA WS 40h Edjalma Queiroz, Msc

19

Projeto Web com primefaces

Formao JAVA WS 40h Edjalma Queiroz, Msc

20

Exercicios Prticos

Desenvolver na IDE os exemplos do material de apoio


bem como os exerccios.

Formao JAVA WS 40h Edjalma Queiroz, Msc

21