Você está na página 1de 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


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


Campus Sapucaia do Sul

Testando os servios desenvolvidos

HttpRequester (Firefox)

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


Campus Sapucaia do Sul

Testando os servios desenvolvidos

DHC (Chrome)

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


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


Campus Sapucaia do Sul

JAX-RS
Objetivo

Descrio

Foco em POJOs

A API vai oferecer um conjunto de anotaes e classes/interfaces


associadas que possam ser usadas com POJOs para exp-los
como recursos Web

Explorar bem o HTTP

HTTP assumido como o protocolo de aplicao, permitindo


utilizar os diferentes mtodos implementados no protocolo

Independncia de
formato

A API permitir o uso de diversos content-types. O suporte aos


content-types ser feito de uma forma plugvel que defina uma
forma padro de extenso para o suporte a novos tipos de
contedo

Independncia de
container

Ser possvel o deployment em qualquer servidor de aplicaes


Java EE e tambm nos containers de Servlets

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


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


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


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

10

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


Campus Sapucaia do Sul

Principais anotaes JAX-RS

11

Pequeno exemplo de Web Service REST

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


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

12

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


Campus Sapucaia do Sul

Principais anotaes JAX-RS

13

Extraindo Valores

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


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
14

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


Campus Sapucaia do Sul

Principais anotaes JAX-RS

Podemos ainda definir valores padro com a


anotao @DefaultValue
Usados em caso de omisso

15

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


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
16

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


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

17

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


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
18

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


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
19

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


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

20

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


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

21

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


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

22

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


Campus Sapucaia do Sul

Entendendo o Web service

23

Exemplo WADL

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


Campus Sapucaia do Sul

Configurar o ambiente

Configurao de um RESTful web service


ApplicationConfig.java

24

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


Campus Sapucaia do Sul

Configurar o ambiente

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

utilizada

Adicionar cada classe dos servios


desenvolvidos

25

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


Campus Sapucaia do Sul

Configurar o ambiente

Configurao de um RESTful web service


Web.xml (precedncia)

26

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


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

27

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


Campus Sapucaia do Sul

Exemplo de Web Services - REST

28

Mtodo GET

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


Campus Sapucaia do Sul

Exemplo de Web Services - REST

Consumindo GET
Construtor do cliente

Consumo

29

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


Campus Sapucaia do Sul

Exemplo de Web Services - REST

Consumindo GET
Lista

30

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


Campus Sapucaia do Sul

Exemplo de Web Services - REST

31

Mtodo POST

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


Campus Sapucaia do Sul

Exemplo de Web Services - REST

32

Consumindo POST

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


Campus Sapucaia do Sul

Exemplo de Web Services - REST

33

Mtodo PUT

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


Campus Sapucaia do Sul

Exemplo de Web Services - REST

34

Consumindo PUT

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


Campus Sapucaia do Sul

Exemplo de Web Services - REST

35

Mtodo DELETE

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


Campus Sapucaia do Sul

Exemplo de Web Services - REST

36

Consumindo DELETE

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


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

37

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


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
-

38

estado: String
valor: Int
peso: Float

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


Campus Sapucaia do Sul

Perguntas?

Você também pode gostar