You are on page 1of 39

Web Services REST JAX-RS

Professor: Ricardo Luis dos Santos


IFSUL Campus Sapucaia do Sul

2015 Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


Campus Sapucaia do Sul
Agenda

Principais tecnologias envolvidas


Testando os servios desenvolvidos
JAX-RS
Principais anotaes JAX-RS
Principais anotaes JAXB
Entendendo o Web Service
Configurar o ambiente
Exemplo de Web Services REST
Exerccio
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense
2
Campus Sapucaia do Sul
Principais tecnologias envolvidas

JAX-RS uma especificao que permite criar RESTful


Web services (anloga a JAX-WS para SOAP)
Jersey a principal implementao da especificao
JAX-RS
JAXB (Java Architecture for XML Binding) permite
parsear objetos para arquivos XML ou JSON
Tomcat o servidor Web utilizado para executar as
aplicaes Java

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


3
Campus Sapucaia do Sul
Testando os servios desenvolvidos

HttpRequester (Firefox)

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


4
Campus Sapucaia do Sul
Testando os servios desenvolvidos

DHC (Chrome)

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


5
Campus Sapucaia do Sul
Testando os servios desenvolvidos

Soap UI (Vrios SOs Linux, Windows e Mac OS)

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


6
Campus Sapucaia do Sul
JAX-RS

Objetivo Descrio
A API vai oferecer um conjunto de anotaes e classes/interfaces
Foco em POJOs associadas que possam ser usadas com POJOs para exp-los
como recursos Web
HTTP assumido como o protocolo de aplicao, permitindo
Explorar bem o HTTP
utilizar os diferentes mtodos implementados no protocolo
A API permitir o uso de diversos content-types. O suporte aos
Independncia de content-types ser feito de uma forma plugvel que defina uma
formato forma padro de extenso para o suporte a novos tipos de
contedo
Independncia de Ser possvel o deployment em qualquer servidor de aplicaes
container Java EE e tambm nos containers de Servlets

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


7
Campus Sapucaia do Sul
Principais anotaes JAX-RS

Para acessar recursos so definidas diversas


anotaes correspondentes aos mtodos HTTP
@GET Implementa um WS para obter informaes de um
recurso
@POST Implementa um WS para criar um recurso
@PUT Implementa um WS para atualizar um recurso
@DELETE Implementa um WS para deletar um recurso
Elas devem ser atribudas a mtodos pblicos
As principais anotaes esto presentes no pacote
javax.ws.rs
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense
8
Campus Sapucaia do Sul
Principais anotaes JAX-RS

@Path(/repositorio/{id})
Pode ser colocada na declarao de classe ou de um
mtodo e possui o elemento value obrigatrio
Por este elemento definimos o prefixo da URI que a classe
ou o mtodo ir atender
Aqui a URI relativa /repositorio/{id}, na qual {id} o valor
do parmetro id, fornecido junto a URI
Geralmente includa na declarao de um mtodo quando
queremos atribuir um caminho mais especfico para um
recurso, de forma a especializar nosso mtodo

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


9
Campus Sapucaia do Sul
Principais anotaes JAX-RS

@Produces
Especifica os tipos MIME que o mtodo produzir como
resposta para o cliente
@Consumes
Especificas os tipos MIME que o mtodo pode receber do
cliente
Para ambos podemos utilizar
MediaType.APPLICATION_XML
MediaType.APPLICATION_JSON
MediaType.TEXT_PLAIN
MediaType.TEXT_HTML
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense
10
Campus Sapucaia do Sul
Principais anotaes JAX-RS

Pequeno exemplo de Web Service REST

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


11
Campus Sapucaia do Sul
Principais anotaes JAX-RS

Extraindo Valores
Anotao Descrio
@PathParam Especifica que o valor do parmetro, ser extrado do valor de um
parmetro indicado na URI, colocado na anotao @Path({param})
@QueryParam Extrai o valor do parmetro da URI Ex: ?idade=29&uf=RS
@FormParam Associa um parmetro a um campo de formulrio enviado pelo
cliente
@MatrixParam Extrai informaes do caminho de uma URI Ex: ;idade=29;uf=RS
@CookieParam Extrai os valores de cookies vinculados sesso
@HeaderParam Extrai dados do cabealho de uma requisio HTTP

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


12
Campus Sapucaia do Sul
Principais anotaes JAX-RS

Extraindo Valores

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


13
Campus Sapucaia do Sul
Principais anotaes JAX-RS

Algumas observaes:
Uma mesma varivel pode ser especificada mltiplas vezes
em uma anotao @Path.
Exemplo: @Path("/users/{nome}/{nome}")
Neste caso, s sero aceitas requisies a URLs cujos dois ltimos
componentes sejam iguais
Variveis podem ser vazias. Exemplo:
@Path("/users/{nome}/home")
Cliente acessa URL /users//home A varivel nome ganha o valor
(String vazia)
Note ainda que a anotao @Path pode ser usada para
mtodos especficos
Aquele mtodo ser mapeado para aquela URL
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense
14
Campus Sapucaia do Sul
Principais anotaes JAX-RS

Podemos ainda definir valores padro com a


anotao @DefaultValue
Usados em caso de omisso

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


15
Campus Sapucaia do Sul
Principais anotaes JAX-RS

H restries em relao aos tipos dos parmetros


S se pode usar tipos com as seguintes caractersticas:
Tipos primitivos, exceto char
Classes correspondentes a tipos primitivos, exceto Character
Qualquer classe com construtor que recebe um nico argumento do
tipo String
Qualquer classe com um mtodo esttico valueOf(String)
List<T>, Set<T>, SortedSet<T>, onde T cai em um dos casos
anteriores.
Caso no seja possvel mapear o valor presente na URL para
o tipo do parmetro, gerado um erro 400
Exemplo: parmetro declarado como int, usurio especifica valor
teste
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense
16
Campus Sapucaia do Sul
Principais anotaes - JAXB

Java Architecture for XML Binding (JAXB) fornece a


API, as ferramentas e um framework para mapear
documentos (XML) e objetos Java
Realiza o marshalling (serializao JAVA -> XML) e
unmarshalling (deserializao XML -> JAVA) do
contedo de documentos para representaes Java
As anotaes esto presentes no pacote
javax.xml.bind.annotation
So utilizadas normalmente nos POJOs

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


17
Campus Sapucaia do Sul
Principais anotaes - JAXB

Classes
@XmlRootElement
Indica que a classe ser representada como um elemento XML
principal
Pode alterar o nome do elemento atravs do valor name=
@XmlAccessorType(XmlAccessType.FIELD)
Indica a localizao das anotaes, no caso esto nos campos do
POJO
@XmlType(propOrder = {"id", "nome", "email", "cpf",
"endereco", "nascimento"})
Indica que a classe mapeia informaes especficas
Permite determinar, por exemplo, a order que os elementos sero
exibidos
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense
18
Campus Sapucaia do Sul
Principais anotaes - JAXB

Classes
@XmlEnum(String.class)
Permite mapear uma classe enum com as devidas anotaes em
cada valor
Atributos
@XmlEnumValue(ACAO)
Mapeia um valor de um enum
@XmlElementWrapper
Mapeia um objeto do tipo lista (com tags filhas)
@XmlElement(name = "contrato")
Utilizada tanto nos atributos quanto nos mtodos, indica que o
atributo ser um atributo XML
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense
19
Campus Sapucaia do Sul
Principais anotaes - JAXB

Atributos
@XmlAttribute(name=num_cpf)
Mapeia o valor de um campo como atributo no arquivo XML
@XmlList
Permite mapear atributos como listas dentro de uma nica tag XML
@XmlSchemaType(name = "date")
Permite definir o mapeamento de diferentes tipos em Java
@XmlTransient
Permite definir que um atributo no ser utilizado nas aes de
serializao e deserializao de objetos

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


20
Campus Sapucaia do Sul
Entendendo o Web service

A implementao do mtodo OPTIONS interessante


Ela retorna (como esperado) o conjunto de requisies que
so suportadas
Mas tambm retorna um documento WADL

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


21
Campus Sapucaia do Sul
Entendendo o Web service

WADL (Web Application Description Language)?


O WADL um formato de documento utilizado para
descrever aplicaes Web em geral
Hoje, o exemplo mais comum de uso com os RESTful Web Services
Prov informao sobre as operaes oferecidas
Parmetros esperados
Formato da entrada
Formato da resposta
o equivalente para RESTful Web Services do WSDL para
Big Web Services

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


22
Campus Sapucaia do Sul
Entendendo o Web service

Exemplo WADL

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


23
Campus Sapucaia do Sul
Configurar o ambiente

Configurao de um RESTful web service


ApplicationConfig.java

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


24
Campus Sapucaia do Sul
Configurar o ambiente

Configurao de um RESTful
Informar web
aqui service
o padro de URL
utilizada
ApplicationConfig.java

Adicionar cada classe dos servios


desenvolvidos

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


25
Campus Sapucaia do Sul
Configurar o ambiente

Configurao de um RESTful web service


Web.xml (precedncia)

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


26
Campus Sapucaia do Sul
Configurar o ambiente

Configurao de um RESTful web service


Web.xml (precedncia)

Adicionar aqui o pacote que contenha os


servios desenvolvidos

Informar aqui o padro de URL


utilizada

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


27
Campus Sapucaia do Sul
Exemplo de Web Services - REST

Mtodo GET

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


28
Campus Sapucaia do Sul
Exemplo de Web Services - REST

Consumindo GET
Construtor do cliente

Consumo

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


29
Campus Sapucaia do Sul
Exemplo de Web Services - REST

Consumindo GET
Lista

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


30
Campus Sapucaia do Sul
Exemplo de Web Services - REST

Mtodo POST

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


31
Campus Sapucaia do Sul
Exemplo de Web Services - REST

Consumindo POST

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


32
Campus Sapucaia do Sul
Exemplo de Web Services - REST

Mtodo PUT

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


33
Campus Sapucaia do Sul
Exemplo de Web Services - REST

Consumindo PUT

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


34
Campus Sapucaia do Sul
Exemplo de Web Services - REST

Mtodo DELETE

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


35
Campus Sapucaia do Sul
Exemplo de Web Services - REST

Consumindo DELETE

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


36
Campus Sapucaia do Sul
Exerccio

Fazer download do projeto WSRest


Configurar o persistence.xml
Criar a base de dados apropriada
Observar os Web Services implementados
Testar os Web Services mais simples (GET)
diretamente no navegador
Testar os Web Services atravs do cliente
implementado dentro do projeto

Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense


37
Campus Sapucaia do Sul
Exerccio

Gerar um POJO para Transporte conforme a classe


abaixo, persistindo no BD
Gerar o DAO para cadastrar novos locais de entrega e
o valor atrelado a estes, por peso
Gerar os devidos servios para as operaes CRUD
sobre essa entidade
Criar um cliente para acessar os servios
desenvolvidos
Transporte
- estado: String
- valor: Int
- peso: Float
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense
38
Campus Sapucaia do Sul
Perguntas?

You might also like