Web Services REST JAX-RS

Documentos relacionados
REST RESTfulWeb Services JAX-RS

Web Services REST e JSON

Aula 25: Web Services (III)

Web Services REST. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Figura 1: Eclipse criação de um Dynamic Web Project

Prática da Disciplina de Sistemas Distribuídos Web Services REST IFMA DAI Professor Mauro Lopes C. Silva

Web Services no JEE 7. Prof. Fellipe Aleixo

EA975 - Laboratório de Engenharia de Software

Desenvolvimento Web II

CONTEÚDO PROGRAMÁTICO

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER 3.0 utilizando o Eclipse Galileo Modelling Tools

Web Services. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV1-01. Luiz Leão

Integração de sistemas utilizando Web Services do tipo REST

Ricardo R. Lecheta. Novatec

Escrito por Neri Neitzke Qua, 21 de Dezembro de :34 - Última atualização Dom, 02 de Abril de :04

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

Linx Automotivo EFD Reinf Web Instruções de Instalação e Configuração no Windows Spress e Sisdia/LinxMaq

Informática Parte 26 Prof. Márcio Hunecke

Desenvolvimento de Sistemas Corporativos Aula 1.5 Introdução a Servlets. Prof. Bruno Moreno

Desenvolvimento Web. Introdução Geral. Prof. Vicente Paulo de Camargo

Ricardo R. Lecheta. Novatec

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER utilizando o Eclipse Galileo Modelling Tools

Manual de Integração do icarta

Desenvolvimento de Aplicações Distribuídas

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

>>> RESTful API >>> Com Node.js e Restify. Name: Anderson Pimentel Date: 19 de Março de

Modelo de Componentes CORBA

REST Um Estilo de Arquitetura de Sistemas Distribuídos

Webservices LEANDRO MENDES FERREIRA

Java para Desenvolvimento Web Carga Horária: 40 Horas.

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...

Sistemas distribuídos. Prof. Emiliano Monteiro

Desenvolvimento de Web Services RESTful e SOAP-WSDL utilizando as Implementações de Referência JAX-RS e JAX-WS. Ricardo Ramos de Oliveira

Principais conceitos de CORBA

EA975 - Laboratório de Engenharia de Software

EA975 - Laboratório de Engenharia de Software

Framework Hibernate/JPA

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...

EA975 - Laboratório de Engenharia de Software. Objetivo do curso. Turmas K/L Aula 1

TUTORIAL INTEGRAÇÃO SPRING, HIBERNATE E MYSQL

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

Continuação... Criando a Interface e adiante

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Desenvolvimento Web III. Prof. Felippe Scheidt

1) DADOS DA OBRA: Programando em Java 2 Teoria e Aplicações Rui Rossi dos Santos 2004 Axcel Books (

JPA Com Hibernate. Paulo Ricardo Lisboa de Almeida. 1 Universidade Positivo

Manual do usuário people

Avaliação de Frameworks de Produtividade para aplicações CRUD

Instalação pré-configurada da plataforma Pentaho Demonstração do uso de relatórios, cubos e dashboards

2 Versão 1: Funcionalidade Básica e Interface Web

Desenvolver um serviço da web RESTful usando o Jersey e o Apache Tomcat

Web Services. Tópicos. Introdução (1/3) CONTEXTO HISTÓRICO WEB SERVICES Conclusões

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

Curso. Liferay Desenvolvedor

DESENVOLVENDO APLICAÇÕES WEB COM JSP E JSTL. Peter Jandl Junior. Novatec

Web I F R N I N S T I T U TO F E D E R A L D E E D U C A Ç Ã O, C I Ê N C I A E T E C N O LO G I A D O R I O G R A N D E D O N R T E.

Kassius Vargas Prestes

Capítulo 2. Camada de aplicação

Informática Parte 23 Prof. Márcio Hunecke

6 Implementação do iph

API DE INTEGRAÇÃO VERSÃO 2. Janeiro/2017. Manual de Integração. Setor de Desenvolvimento

Administrador Documentos. Gestão de Documentos. Título do documento

Conexão com Banco de Dados

BANCO DE DADOS ORIENTADO A OBJETOS

Manual de Integração WebService

Visibilidade e Encapsulamento

Desenvolvimento Web II

Criando um CRUD RESTful com Jersey, JPA e MySQL

contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles.

API - Webservices. Grupo Cortez de Lima

Exercício Programa Mini Web Server

Introdução ao Desenvolvimento de

Transcrição:

Web Services REST JAX-RS Professor: Ricardo Luis dos Santos IFSUL 2015

Agenda Principais tecnologias envolvidas Testando os serviços desenvolvidos JAX-RS Principais anotações JAX-RS Principais anotações JAXB Entendendo o Web Service Configurar o ambiente Exemplo de Web Services REST Exercício 2

Principais tecnologias envolvidas JAX-RS é uma especificação que permite criar RESTful Web services (análoga a JAX-WS para SOAP) Jersey é a principal implementação da especificação JAX-RS JAXB (Java Architecture for XML Binding) permite parsear objetos para arquivos XML ou JSON Tomcat é o servidor Web utilizado para executar as aplicações Java 3

Testando os serviços desenvolvidos HttpRequester (Firefox) 4

Testando os serviços desenvolvidos DHC (Chrome) 5

Testando os serviços desenvolvidos Soap UI (Vários SOs Linux, Windows e Mac OS) 6

JAX-RS Objetivo Foco em POJOs Explorar bem o HTTP Independência de formato Independência de container Descrição A API vai oferecer um conjunto de anotações e classes/interfaces associadas que possam ser usadas com POJOs para expô-los como recursos Web HTTP é assumido como o protocolo de aplicação, permitindo utilizar os diferentes métodos implementados no protocolo A API permitirá o uso de diversos content-types. O suporte aos content-types será feito de uma forma plugável que defina uma forma padrão de extensão para o suporte a novos tipos de conteúdo Será possível o deployment em qualquer servidor de aplicações Java EE e também nos containers de Servlets 7

Principais anotações JAX-RS Para acessar recursos são definidas diversas anotações correspondentes aos métodos HTTP @GET Implementa um WS para obter informações 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 atribuídas a métodos públicos As principais anotações estão presentes no pacote javax.ws.rs 8

Principais anotações JAX-RS @Path( /repositorio/{id} ) Pode ser colocada na declaração de classe ou de um método e possui o elemento value obrigatório Por este elemento definimos o prefixo da URI que a classe ou o método irá atender Aqui a URI relativa /repositorio/{id}, na qual {id} é o valor do parâmetro id, fornecido junto a URI Geralmente incluída na declaração de um método quando queremos atribuir um caminho mais específico para um recurso, de forma a especializar nosso método 9

Principais anotações JAX-RS @Produces 10 Especifica os tipos MIME que o método produzirá como resposta para o cliente @Consumes Especificas os tipos MIME que o método pode receber do cliente Para ambos podemos utilizar MediaType.APPLICATION_XML MediaType.APPLICATION_JSON MediaType.TEXT_PLAIN MediaType.TEXT_HTML

Principais anotações JAX-RS Pequeno exemplo de Web Service REST 11

Principais anotações JAX-RS Extraindo Valores Anotação @PathParam @QueryParam @FormParam @MatrixParam @CookieParam @HeaderParam Descrição Especifica que o valor do parâmetro, será extraído do valor de um parâmetro indicado na URI, colocado na anotação @Path({param}) Extrai o valor do parâmetro da URI Ex:?idade=29&uf=RS Associa um parâmetro a um campo de formulário enviado pelo cliente Extrai informações do caminho de uma URI Ex: ;idade=29;uf=rs Extrai os valores de cookies vinculados à sessão Extrai dados do cabeçalho de uma requisição HTTP 12

Principais anotações JAX-RS Extraindo Valores 13

Principais anotações JAX-RS Algumas observações: 14 Uma mesma variável pode ser especificada múltiplas vezes em uma anotação @Path. Exemplo: @Path("/users/{nome}/{nome}") Neste caso, só serão aceitas requisições a URLs cujos dois últimos componentes sejam iguais Variáveis podem ser vazias. Exemplo: @Path("/users/{nome}/home") Cliente acessa URL /users//home A variável nome ganha o valor (String vazia) Note ainda que a anotação @Path pode ser usada para métodos específicos Aquele método será mapeado para aquela URL

Principais anotações JAX-RS Podemos ainda definir valores padrão com a anotação @DefaultValue Usados em caso de omissão 15

Principais anotações JAX-RS Há restrições em relação aos tipos dos parâmetros Só se pode usar tipos com as seguintes características: 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 método estático valueof(string) List<T>, Set<T>, SortedSet<T>, onde T cai em um dos casos anteriores. Caso não seja possível mapear o valor presente na URL para o tipo do parâmetro, é gerado um erro 400 Exemplo: parâmetro declarado como int, usuário especifica valor teste 16

Principais anotações - 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 (serialização JAVA -> XML) e unmarshalling (deserialização XML -> JAVA) do conteúdo de documentos para representações Java As anotações estão presentes no pacote javax.xml.bind.annotation São utilizadas normalmente nos POJOs 17

Principais anotações - JAXB Classes 18 @XmlRootElement Indica que a classe será representada como um elemento XML principal Pode alterar o nome do elemento através do valor name= @XmlAccessorType(XmlAccessType.FIELD) Indica a localização das anotações, no caso estão nos campos do POJO @XmlType(propOrder = {"id", "nome", "email", "cpf", "endereco", "nascimento"}) Indica que a classe mapeia informações específicas Permite determinar, por exemplo, a order que os elementos serão exibidos

Principais anotações - JAXB Classes 19 @XmlEnum(String.class) Permite mapear uma classe enum com as devidas anotações 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 métodos, indica que o atributo será um atributo XML

Principais anotações - 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 não será utilizado nas ações de serialização e deserialização de objetos 20

Entendendo o Web service A implementação do método OPTIONS é interessante Ela retorna (como esperado) o conjunto de requisições que são suportadas Mas também retorna um documento WADL 21

Entendendo o Web service WADL (Web Application Description Language)? O WADL é um formato de documento utilizado para descrever aplicações Web em geral Hoje, o exemplo mais comum de uso é com os RESTful Web Services Provê informação sobre as operações oferecidas Parâmetros esperados Formato da entrada Formato da resposta É o equivalente para RESTful Web Services do WSDL para Big Web Services 22

Entendendo o Web service Exemplo WADL 23

Configurar o ambiente Configuração de um RESTful web service ApplicationConfig.java 24

Configurar o ambiente Configuração de um RESTful web service ApplicationConfig.java Informar aqui o padrão de URL utilizada Adicionar cada classe dos serviços desenvolvidos 25

Configurar o ambiente Configuração de um RESTful web service Web.xml (precedência) 26

Configurar o ambiente Configuração de um RESTful web service Web.xml (precedência) Adicionar aqui o pacote que contenha os serviços desenvolvidos Informar aqui o padrão de URL utilizada 27

Exemplo de Web Services - REST Método GET 28

Exemplo de Web Services - REST Consumindo GET Construtor do cliente Consumo 29

Exemplo de Web Services - REST Consumindo GET Lista 30

Exemplo de Web Services - REST Método POST 31

Exemplo de Web Services - REST Consumindo POST 32

Exemplo de Web Services - REST Método PUT 33

Exemplo de Web Services - REST Consumindo PUT 34

Exemplo de Web Services - REST Método DELETE 35

Exemplo de Web Services - REST Consumindo DELETE 36

Exercício 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 através do cliente implementado dentro do projeto 37

Exercício 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 serviços para as operações CRUD sobre essa entidade Criar um cliente para acessar os serviços desenvolvidos Transporte - estado: String - valor: Int - peso: Float 38

Perguntas?