Download - Web Services Implementação
-
7/26/2019 Web Services Implementao
1/39
2015 Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense
Campus Sapucaia do Sul
Web Services REST JAX-RSProfessor: Ricardo Luis dos Santos
IFSUL Campus Sapucaia do Sul
-
7/26/2019 Web Services Implementao
2/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
2
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
-
7/26/2019 Web Services Implementao
3/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
3
Principais tecnologias envolvidas
JAX-RS uma especificao que permite criar RESTfulWeb 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 asaplicaes Java
-
7/26/2019 Web Services Implementao
4/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
4
Testando os servios desenvolvidos
HttpRequester (Firefox)
-
7/26/2019 Web Services Implementao
5/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
5
Testando os servios desenvolvidos
DHC (Chrome)
-
7/26/2019 Web Services Implementao
6/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
6
Testando os servios desenvolvidos
Soap UI (Vrios SOs Linux, Windows e Mac OS)
-
7/26/2019 Web Services Implementao
7/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
7
JAX-RS
Objetivo Descrio
Foco em POJOsA API vai oferecer um conjunto de anotaes e classes/interfacesassociadas que possam ser usadas com POJOs para exp-loscomo recursos Web
Explorar bem o HTTPHTTP assumido como o protocolo de aplicao, permitindoutilizar os diferentes mtodos implementados no protocolo
Independncia deformato
A API permitir o uso de diversos content-types. O suporte aoscontent-types ser feito de uma forma plugvel que defina umaforma padro de extenso para o suporte a novos tipos decontedo
Independncia decontainer
Ser possvel o deploymentem qualquer servidor de aplicaesJava EE e tambm nos containers de Servlets
-
7/26/2019 Web Services Implementao
8/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
8
Principais anotaes JAX-RS
Para acessar recursos so definidas diversasanotaes correspondentes aos mtodos HTTP
@GET Implementa um WS para obter informaes de umrecurso
@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 pacotejavax.ws.rs
-
7/26/2019 Web Services Implementao
9/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
9
Principais anotaes JAX-RS
@Path(/repositorio/{id})
Pode ser colocada na declarao de classe ou de ummtodo e possui o elemento value obrigatrio
Por este elemento definimos o prefixo da URI que a classeou o mtodo ir atender
Aqui a URI relativa /repositorio/{id}, na qual {id} o valordo parmetro id, fornecido junto a URI
Geralmente includa na declarao de um mtodo quandoqueremos atribuir um caminho mais especfico para umrecurso, de forma a especializar nosso mtodo
-
7/26/2019 Web Services Implementao
10/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
10
Principais anotaes JAX-RS
@Produces
Especifica os tipos MIME que o mtodo produzir comoresposta 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
-
7/26/2019 Web Services Implementao
11/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
11
Principais anotaes JAX-RS
Pequeno exemplo de Web Service REST
-
7/26/2019 Web Services Implementao
12/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
12
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 pelocliente
@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
-
7/26/2019 Web Services Implementao
13/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
13
Principais anotaes JAX-RS
Extraindo Valores
-
7/26/2019 Web Services Implementao
14/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
14
Principais anotaes JAX-RS
Algumas observaes:
Uma mesma varivel pode ser especificada mltiplas vezesem uma anotao @Path.
Exemplo: @Path("/users/{nome}/{nome}")
Neste caso, s sero aceitas requisies a URLs cujos dois ltimoscomponentes 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 paramtodos especficos
Aquele mtodo ser mapeado para aquela URL
-
7/26/2019 Web Services Implementao
15/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
15
Principais anotaes JAX-RS
Podemos ainda definir valores padro com aanotao @DefaultValue
Usados em caso de omisso
-
7/26/2019 Web Services Implementao
16/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
16
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 dotipo String
Qualquer classe com um mtodo esttico valueOf(String)
List, Set, SortedSet, 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 valorteste
-
7/26/2019 Web Services Implementao
17/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
17
Principais anotaes - JAXB
Java Architecture for XML Binding (JAXB) fornece aAPI, as ferramentas e um framework para mapeardocumentos (XML) e objetos Java
Realiza o marshalling (serializao JAVA -> XML) eunmarshalling (deserializao XML -> JAVA) docontedo de documentos para representaes Java
As anotaes esto presentes no pacote
javax.xml.bind.annotation So utilizadas normalmente nos POJOs
-
7/26/2019 Web Services Implementao
18/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
18
Principais anotaes - JAXB
Classes
@XmlRootElement
Indica que a classe ser representada como um elemento XMLprincipal
Pode alterar o nome do elemento atravs do valor name=
@XmlAccessorType(XmlAccessType.FIELD)
Indica a localizao das anotaes, no caso esto nos campos doPOJO
@XmlType(propOrder = {"id", "nome", "email", "cpf","endereco", "nascimento"})
Indica que a classe mapeia informaes especficas
Permite determinar, por exemplo, a order que os elementos seroexibidos
-
7/26/2019 Web Services Implementao
19/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
19
Principais anotaes - JAXB
Classes
@XmlEnum(String.class)
Permite mapear uma classe enum com as devidas anotaes emcada 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 oatributo ser um atributo XML
-
7/26/2019 Web Services Implementao
20/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
20
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
-
7/26/2019 Web Services Implementao
21/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
21
Entendendo o Web service
A implementao do mtodo OPTIONS interessante
Ela retorna (como esperado) o conjunto de requisies queso suportadas
Mas tambm retorna um documento WADL
-
7/26/2019 Web Services Implementao
22/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
22
Entendendo o Web service
WADL (Web Application Description Language)?
O WADL um formato de documento utilizado paradescrever 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 paraBig Web Services
-
7/26/2019 Web Services Implementao
23/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
23
Entendendo o Web service
Exemplo WADL
-
7/26/2019 Web Services Implementao
24/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
24
Configurar o ambiente
Configurao de um RESTful web service
ApplicationConfig.java
-
7/26/2019 Web Services Implementao
25/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
25
Configurar o ambiente
Configurao de um RESTful web service
ApplicationConfig.java
Adicionar cada classe dos servios
desenvolvidos
Informar aqui o padro de URL
utilizada
-
7/26/2019 Web Services Implementao
26/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
26
Configurar o ambiente
Configurao de um RESTful web service
Web.xml (precedncia)
-
7/26/2019 Web Services Implementao
27/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
27
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
-
7/26/2019 Web Services Implementao
28/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
28
Exemplo de Web Services - REST
Mtodo GET
-
7/26/2019 Web Services Implementao
29/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
29
Exemplo de Web Services - REST
Consumindo GET
Construtor do cliente
Consumo
-
7/26/2019 Web Services Implementao
30/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
30
Exemplo de Web Services - REST
Consumindo GET
Lista
-
7/26/2019 Web Services Implementao
31/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
31
Exemplo de Web Services - REST
Mtodo POST
-
7/26/2019 Web Services Implementao
32/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
32
Exemplo de Web Services - REST
Consumindo POST
-
7/26/2019 Web Services Implementao
33/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
33
Exemplo de Web Services - REST
Mtodo PUT
-
7/26/2019 Web Services Implementao
34/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
34
Exemplo de Web Services - REST
Consumindo PUT
-
7/26/2019 Web Services Implementao
35/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
35
Exemplo de Web Services - REST
Mtodo DELETE
-
7/26/2019 Web Services Implementao
36/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
36
Exemplo de Web Services - REST
Consumindo DELETE
-
7/26/2019 Web Services Implementao
37/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
37
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 clienteimplementado dentro do projeto
-
7/26/2019 Web Services Implementao
38/39
Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul
38
Exerccio
Gerar um POJO para Transporte conforme a classeabaixo, 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
- estado: String
- valor: Int
- peso: Float
Transporte
-
7/26/2019 Web Services Implementao
39/39
Perguntas?