SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
Restful WebServices em Java
Alexandre Macedo
K19 Treinamentos
15 de novembro de 2010
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Objetivos
Responder as seguintes perguntas:
I o que é um WebService?
I o que é um Restful WebService?
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Objetivos
Responder as seguintes perguntas:
I o que é um WebService?
I o que é um Restful WebService?
Além disso vamos desenvolver uma pequena aplicação em Java
demonstrando um WebService na prática.
Alexandre Macedo Restful WebServices em Java www.k19.com.br
O que são WebServices?
Características de WebServices:
Alexandre Macedo Restful WebServices em Java www.k19.com.br
O que são WebServices?
Características de WebServices:
I é um sistema que utiliza o protocolo HTTP, do mesmo jeito que uma
aplicação web, com requests e responses;
I tipicamente utiliza XML ou outros formatos de arquivos, como JSON,
para transferência de dados;
I geralmente utilizado para integrar sistemas diferentes, ou disponibilizar
uma série de serviços de uma aplicação, como o Twitter ou Flicker.
Alexandre Macedo Restful WebServices em Java www.k19.com.br
O que são WebServices?
Alexandre Macedo Restful WebServices em Java www.k19.com.br
O que são WebServices?
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Exemplos de uso
API do Twitter
I buscando os últimos tweets da @oliviamunn:
http://api.twitter.com/1/statuses/user_timeline.
xml?screen_name=oliviamunn
API do Flicker
I buscando imagens da Megan Fox:
http://api.flickr.com/services/feeds/photos_
public.gne?tags=megan+fox&format=xml
Alexandre Macedo Restful WebServices em Java www.k19.com.br
O que é REST?
Definição
“REpresentational State Transfer (REST) é um estilo de arquitetura de
software para hipermídia distribuída, tal como a World Wide Web.”
— Wikipedia
Alexandre Macedo Restful WebServices em Java www.k19.com.br
O que é REST?
Na prática, funciona como um conjunto de princípios que servem para
definir um sistema, tais como:
Alexandre Macedo Restful WebServices em Java www.k19.com.br
O que é REST?
Na prática, funciona como um conjunto de princípios que servem para
definir um sistema, tais como:
I arquitetura cliente/servidor;
I não armazenar estado;
I uma interface única e bem definida, tais como os métodos do HTTP
(GET, POST, PUT, DELETE);
I entre outras.
Alexandre Macedo Restful WebServices em Java www.k19.com.br
O que é um RESTful Web Service?
É um web service que utiliza HTTP e segue os princípios REST.
Em geral, possui 3 características principais:
I uma URI base para o web service;
I um formato de dados suportado pelo web service, em geral XML ou
JSON;
I um conjunto de operações suportados, utilizando os métodos HTTP.
Alexandre Macedo Restful WebServices em Java www.k19.com.br
RESTful URIs
A parte mais importante de um web service restful se refere à suas URIs.
Em geral, temos uma URI base para identificar um recurso, e teremos
operações que variam conforme o método HTTP utilizado. Essas operações
seriam equivalentes às mesmas operações de CRUD.
Alexandre Macedo Restful WebServices em Java www.k19.com.br
RESTful URIs
Operações sobre uma coleção:
http://exemplo.com/livros/
GET obtém a coleção
POST adiciona um item à coleção
PUT substitue a coleção
DELETE remove a coleção
Alexandre Macedo Restful WebServices em Java www.k19.com.br
RESTful URIs
Operações sobre um item:
http://exemplo.com/livros/45
GET obtém o item
POST —
PUT atualiza o item
DELETE remove o item
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Implementando em Java
I no Java EE, existe uma especificação chamada JAX-RS (JSR-311) que
padroniza anotações para criar um web service seguindo os princípios
REST,
I aqui será utilizado o Jersey (na versão 1.3) que é a implementação de
referência desenvolvida pela própria Sun.
Alexandre Macedo Restful WebServices em Java www.k19.com.br
O que é necessário?
Para ter o básico:
I jersey-server.jar
I jersey-core.jar
I jsr311-api.jar
I asm.jar
Para criar um WebServer (opcional):
I grizzly-servlet-webserver.jar
Para ter suporte a JSON:
I jersey-json.jar
Alexandre Macedo Restful WebServices em Java www.k19.com.br
A Entidade
@XmlRootElement
public class Livro {
private int id;
private String titulo;
private String autor;
// getters and setters
}
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Anotações
O Jersey é baseado em diversas anotações. As principais são as seguintes:
@Path indica qual a URI correspondente.
@GET/@POST/@PUT/@DELETE indicam a qual verbo HTTP o método
deve ser executado.
@Produces indica o MIME-type da Response.
@Consumes indica o MIME-type do conteúdo da Request.
Alexandre Macedo Restful WebServices em Java www.k19.com.br
O WebResource
@Path("livros")
public class LivroResource {
@GET
@Produces("text/xml")
public List<Livro> getLivros() {
// busca livros na base de dados, ou outro lugar
return livros;
}
@POST
@Consumes("text/xml")
@Produces("text/plain")
public String adicionaLivro(Livro livro)
// adiciona o livro na base de dados
return "Livro adicionado.";
}
Alexandre Macedo Restful WebServices em Java www.k19.com.br
O WebService
public class Main {
public static void main(String[] args)
throws IllegalArgumentException, IOException {
final String baseUri = "http://localhost:9999/";
final Map<String, String> initParams =
new HashMap<String, String>();
initParams.put(
"com.sun.jersey.config.property.packages",
"resources");
System.out.println("Iniciando o Grizzly...");
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Continuando...
SelectorThread threadSelector =
GrizzlyWebContainerFactory.create(
baseUri, initParams);
System.out.println("Aperte enter para encerrar...");
System.in.read();
threadSelector.stopEndpoint();
System.out.println("Encerrado.");
System.exit(0);
}
}
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Testando o WebService
I no exemplo anterior, basta acessar a URI a partir de qualquer
navegador, que será mostrado um XML.
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Testando o WebService
I no exemplo anterior, basta acessar a URI a partir de qualquer
navegador, que será mostrado um XML.
I às vezes, iremos necessitar de uma ferramenta mais elaborada para
configurar a requisição (PUT, POST ou DELETE) ou para enviar
dados no formato XML. No Linux, podemos utilizar o comando curl
para fazer diferentes tipos de requisições.
curl http://localhost:9999/livros
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Testando o WebService
I no exemplo anterior, basta acessar a URI a partir de qualquer
navegador, que será mostrado um XML.
I às vezes, iremos necessitar de uma ferramenta mais elaborada para
configurar a requisição (PUT, POST ou DELETE) ou para enviar
dados no formato XML. No Linux, podemos utilizar o comando curl
para fazer diferentes tipos de requisições.
curl http://localhost:9999/livros
I outra opção, para quem utiliza Firefox, é o add-on Poster, que
também permite configurar as requisições antes de serem enviadas.
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Exemplo com JSON
Um livro em XML:
<livro>
<autor>Orwell</autor>
<titulo>1984</titulo>
<id>42</id>
</livro>
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Exemplo com JSON
Um livro em XML:
<livro>
<autor>Orwell</autor>
<titulo>1984</titulo>
<id>42</id>
</livro>
Um livro em JSON:
{
"autor": "George Orwell",
"titulo": "1984",
"id": 42
}
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Exemplo com JSON
Um livro em XML:
<livro>
<autor>Orwell</autor>
<titulo>1984</titulo>
<id>42</id>
</livro>
Um livro em JSON:
{
"autor": "George Orwell",
"titulo": "1984",
"id": 42
}
A vantagem do JSON sobre o XML ocorre principalmente nas requisições
em AJAX, pois não existe um parser nativo para XML em Javascript. Desse
modo, requisições em AJAX que utilizam JSON são mais simples.
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Exemplo com JSON
@GET
@Produces("application/json")
public List<Livro> getLivrosEmJson() {
// busca livros na base de dados
return livros;
}
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Exemplo com JSON
@GET
@Produces("application/json")
public List<Livro> getLivrosEmJson() {
// busca livros na base de dados
return livros;
}
A URI é a mesma, o que muda é o cabeçalho da requisição, que deve incluir
um campo "Accept:application/json". Veja o exemplo com curl:
curl -H "Accept:application/json" 
http://localhost:9999/livros
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Conclusão
O Jersey é simples de usar e altamente customizável, se tornando uma
opção recomendada para criar APIs baseadas em URLs.
Alexandre Macedo Restful WebServices em Java www.k19.com.br
Obrigado!
Dúvidas ou sugestões: contato@k19.com.br
Para acompanhar as novidades confira o site: www.k19.com.br
Ou siga-nos no Twitter: @k19treinamentos

Weitere ähnliche Inhalte

Was ist angesagt?

Mini Curso Web Services com PHP
Mini Curso Web Services com PHPMini Curso Web Services com PHP
Mini Curso Web Services com PHPelliando dias
 
Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPRenan Gonçalves
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Carl Edwin
 
Criando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHPCriando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHP2km interativa!
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoDavid Robert Camargo de Campos
 
Como um verdadeiro sistema REST funciona: arquitetura e performance na Abril
Como um verdadeiro sistema REST funciona: arquitetura e performance na AbrilComo um verdadeiro sistema REST funciona: arquitetura e performance na Abril
Como um verdadeiro sistema REST funciona: arquitetura e performance na AbrilLuis Cipriani
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Ricardo Terra
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Eduardo Mendes
 
REST: Padrões e Melhores Práticas
REST: Padrões e Melhores PráticasREST: Padrões e Melhores Práticas
REST: Padrões e Melhores PráticasAlessandro Oliveira
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX Sérgio Souza Costa
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)Bruno Pedro
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPManoel Afonso
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web ServicesFabio Leal
 

Was ist angesagt? (20)

Mini Curso Web Services com PHP
Mini Curso Web Services com PHPMini Curso Web Services com PHP
Mini Curso Web Services com PHP
 
Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHP
 
Web Services Rest
Web Services RestWeb Services Rest
Web Services Rest
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
 
Criando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHPCriando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHP
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenho
 
Como um verdadeiro sistema REST funciona: arquitetura e performance na Abril
Como um verdadeiro sistema REST funciona: arquitetura e performance na AbrilComo um verdadeiro sistema REST funciona: arquitetura e performance na Abril
Como um verdadeiro sistema REST funciona: arquitetura e performance na Abril
 
Servlets e jsp
Servlets e jspServlets e jsp
Servlets e jsp
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
REST: Padrões e Melhores Práticas
REST: Padrões e Melhores PráticasREST: Padrões e Melhores Práticas
REST: Padrões e Melhores Práticas
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSP
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web Services
 

Andere mochten auch

JEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por aiJEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por aiRafael Nunes
 
Perspectivas em teste de software
Perspectivas em teste de softwarePerspectivas em teste de software
Perspectivas em teste de softwareQualister
 
O Abismo da Marca - Brand Gap
O Abismo da Marca - Brand GapO Abismo da Marca - Brand Gap
O Abismo da Marca - Brand GapArnaldo Rabelo
 
Minicourse - RiPLE : The RiSE Process for Product Line Engineering
Minicourse -  RiPLE : The RiSE Process for Product Line EngineeringMinicourse -  RiPLE : The RiSE Process for Product Line Engineering
Minicourse - RiPLE : The RiSE Process for Product Line EngineeringVanilson Buregio
 
Rfs Scott Fain W Loan Mod
Rfs Scott Fain W Loan ModRfs Scott Fain W Loan Mod
Rfs Scott Fain W Loan ModScott-Fain.com
 
Edital 05 2013_cn_pq_gates
Edital 05 2013_cn_pq_gatesEdital 05 2013_cn_pq_gates
Edital 05 2013_cn_pq_gatesDenizecomZ
 
Apresentação farma ago 11
Apresentação farma ago 11Apresentação farma ago 11
Apresentação farma ago 11Roberto Falcão
 
Matchbbin Technology
Matchbbin TechnologyMatchbbin Technology
Matchbbin Technologyilliniman2
 
Welcome to the UEL Library and Learning Services - Induction 2015
Welcome to the UEL Library and Learning Services - Induction 2015Welcome to the UEL Library and Learning Services - Induction 2015
Welcome to the UEL Library and Learning Services - Induction 2015Simone Okolo
 
0165 k2 b_mobile_la_empresa_en_sus_manos
0165 k2 b_mobile_la_empresa_en_sus_manos0165 k2 b_mobile_la_empresa_en_sus_manos
0165 k2 b_mobile_la_empresa_en_sus_manosGeneXus
 
[EN] Aastra - Vertical Market - Industry
[EN] Aastra - Vertical Market - Industry[EN] Aastra - Vertical Market - Industry
[EN] Aastra - Vertical Market - IndustryVincent Perquia
 
Guia dos Museus Brasileiros
Guia dos Museus BrasileirosGuia dos Museus Brasileiros
Guia dos Museus Brasileiroscultcultura
 
UCS Impact of Innovation
UCS Impact of InnovationUCS Impact of Innovation
UCS Impact of InnovationMeredithSabye
 

Andere mochten auch (20)

JEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por aiJEE 6 e REST - O que vem por ai
JEE 6 e REST - O que vem por ai
 
Web Services
Web ServicesWeb Services
Web Services
 
Perspectivas em teste de software
Perspectivas em teste de softwarePerspectivas em teste de software
Perspectivas em teste de software
 
O Abismo da Marca - Brand Gap
O Abismo da Marca - Brand GapO Abismo da Marca - Brand Gap
O Abismo da Marca - Brand Gap
 
Minicourse - RiPLE : The RiSE Process for Product Line Engineering
Minicourse -  RiPLE : The RiSE Process for Product Line EngineeringMinicourse -  RiPLE : The RiSE Process for Product Line Engineering
Minicourse - RiPLE : The RiSE Process for Product Line Engineering
 
Rfs Scott Fain W Loan Mod
Rfs Scott Fain W Loan ModRfs Scott Fain W Loan Mod
Rfs Scott Fain W Loan Mod
 
Nutrição Unisinos
Nutrição UnisinosNutrição Unisinos
Nutrição Unisinos
 
ReviewFall14_F
ReviewFall14_FReviewFall14_F
ReviewFall14_F
 
Apostila sqlserver65v1a
Apostila sqlserver65v1aApostila sqlserver65v1a
Apostila sqlserver65v1a
 
Informeesag 2013.1
Informeesag 2013.1Informeesag 2013.1
Informeesag 2013.1
 
Ana Arraes_O Globo
Ana Arraes_O GloboAna Arraes_O Globo
Ana Arraes_O Globo
 
Edital 05 2013_cn_pq_gates
Edital 05 2013_cn_pq_gatesEdital 05 2013_cn_pq_gates
Edital 05 2013_cn_pq_gates
 
Apresentação farma ago 11
Apresentação farma ago 11Apresentação farma ago 11
Apresentação farma ago 11
 
Matchbbin Technology
Matchbbin TechnologyMatchbbin Technology
Matchbbin Technology
 
Welcome to the UEL Library and Learning Services - Induction 2015
Welcome to the UEL Library and Learning Services - Induction 2015Welcome to the UEL Library and Learning Services - Induction 2015
Welcome to the UEL Library and Learning Services - Induction 2015
 
0165 k2 b_mobile_la_empresa_en_sus_manos
0165 k2 b_mobile_la_empresa_en_sus_manos0165 k2 b_mobile_la_empresa_en_sus_manos
0165 k2 b_mobile_la_empresa_en_sus_manos
 
[EN] Aastra - Vertical Market - Industry
[EN] Aastra - Vertical Market - Industry[EN] Aastra - Vertical Market - Industry
[EN] Aastra - Vertical Market - Industry
 
Guia dos Museus Brasileiros
Guia dos Museus BrasileirosGuia dos Museus Brasileiros
Guia dos Museus Brasileiros
 
UCS Impact of Innovation
UCS Impact of InnovationUCS Impact of Innovation
UCS Impact of Innovation
 
ApresentaçãO Institucional InglêS 18.08.2009
ApresentaçãO Institucional InglêS 18.08.2009ApresentaçãO Institucional InglêS 18.08.2009
ApresentaçãO Institucional InglêS 18.08.2009
 

Ähnlich wie WebService Restful em Java

Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixAndré Déo
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Helder da Rocha
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Thyago Maia
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONAmbiente Livre
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EELuan Felipe Knebel
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2Thyago Maia
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTMario Sergio
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com SpringMateus Malaquias
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0jesuinoPower
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkRafael Dohms
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Thyago Maia
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationMario Sergio
 

Ähnlich wie WebService Restful em Java (20)

Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com Zabbix
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
 
A Web é uma API
A Web é uma APIA Web é uma API
A Web é uma API
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
Palestra
PalestraPalestra
Palestra
 
Web service
Web serviceWeb service
Web service
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
 
Curso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service RESTCurso Java (Parte 8) Web Service REST
Curso Java (Parte 8) Web Service REST
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao Framework
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Conhecendo Ror
Conhecendo RorConhecendo Ror
Conhecendo Ror
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
API Apontador
API ApontadorAPI Apontador
API Apontador
 

WebService Restful em Java

  • 1. Restful WebServices em Java Alexandre Macedo K19 Treinamentos 15 de novembro de 2010 Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 2. Objetivos Responder as seguintes perguntas: I o que é um WebService? I o que é um Restful WebService? Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 3. Objetivos Responder as seguintes perguntas: I o que é um WebService? I o que é um Restful WebService? Além disso vamos desenvolver uma pequena aplicação em Java demonstrando um WebService na prática. Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 4. O que são WebServices? Características de WebServices: Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 5. O que são WebServices? Características de WebServices: I é um sistema que utiliza o protocolo HTTP, do mesmo jeito que uma aplicação web, com requests e responses; I tipicamente utiliza XML ou outros formatos de arquivos, como JSON, para transferência de dados; I geralmente utilizado para integrar sistemas diferentes, ou disponibilizar uma série de serviços de uma aplicação, como o Twitter ou Flicker. Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 6. O que são WebServices? Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 7. O que são WebServices? Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 8. Exemplos de uso API do Twitter I buscando os últimos tweets da @oliviamunn: http://api.twitter.com/1/statuses/user_timeline. xml?screen_name=oliviamunn API do Flicker I buscando imagens da Megan Fox: http://api.flickr.com/services/feeds/photos_ public.gne?tags=megan+fox&format=xml Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 9. O que é REST? Definição “REpresentational State Transfer (REST) é um estilo de arquitetura de software para hipermídia distribuída, tal como a World Wide Web.” — Wikipedia Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 10. O que é REST? Na prática, funciona como um conjunto de princípios que servem para definir um sistema, tais como: Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 11. O que é REST? Na prática, funciona como um conjunto de princípios que servem para definir um sistema, tais como: I arquitetura cliente/servidor; I não armazenar estado; I uma interface única e bem definida, tais como os métodos do HTTP (GET, POST, PUT, DELETE); I entre outras. Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 12. O que é um RESTful Web Service? É um web service que utiliza HTTP e segue os princípios REST. Em geral, possui 3 características principais: I uma URI base para o web service; I um formato de dados suportado pelo web service, em geral XML ou JSON; I um conjunto de operações suportados, utilizando os métodos HTTP. Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 13. RESTful URIs A parte mais importante de um web service restful se refere à suas URIs. Em geral, temos uma URI base para identificar um recurso, e teremos operações que variam conforme o método HTTP utilizado. Essas operações seriam equivalentes às mesmas operações de CRUD. Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 14. RESTful URIs Operações sobre uma coleção: http://exemplo.com/livros/ GET obtém a coleção POST adiciona um item à coleção PUT substitue a coleção DELETE remove a coleção Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 15. RESTful URIs Operações sobre um item: http://exemplo.com/livros/45 GET obtém o item POST — PUT atualiza o item DELETE remove o item Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 16. Implementando em Java I no Java EE, existe uma especificação chamada JAX-RS (JSR-311) que padroniza anotações para criar um web service seguindo os princípios REST, I aqui será utilizado o Jersey (na versão 1.3) que é a implementação de referência desenvolvida pela própria Sun. Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 17. O que é necessário? Para ter o básico: I jersey-server.jar I jersey-core.jar I jsr311-api.jar I asm.jar Para criar um WebServer (opcional): I grizzly-servlet-webserver.jar Para ter suporte a JSON: I jersey-json.jar Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 18. A Entidade @XmlRootElement public class Livro { private int id; private String titulo; private String autor; // getters and setters } Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 19. Anotações O Jersey é baseado em diversas anotações. As principais são as seguintes: @Path indica qual a URI correspondente. @GET/@POST/@PUT/@DELETE indicam a qual verbo HTTP o método deve ser executado. @Produces indica o MIME-type da Response. @Consumes indica o MIME-type do conteúdo da Request. Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 20. O WebResource @Path("livros") public class LivroResource { @GET @Produces("text/xml") public List<Livro> getLivros() { // busca livros na base de dados, ou outro lugar return livros; } @POST @Consumes("text/xml") @Produces("text/plain") public String adicionaLivro(Livro livro) // adiciona o livro na base de dados return "Livro adicionado."; } Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 21. O WebService public class Main { public static void main(String[] args) throws IllegalArgumentException, IOException { final String baseUri = "http://localhost:9999/"; final Map<String, String> initParams = new HashMap<String, String>(); initParams.put( "com.sun.jersey.config.property.packages", "resources"); System.out.println("Iniciando o Grizzly..."); Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 22. Continuando... SelectorThread threadSelector = GrizzlyWebContainerFactory.create( baseUri, initParams); System.out.println("Aperte enter para encerrar..."); System.in.read(); threadSelector.stopEndpoint(); System.out.println("Encerrado."); System.exit(0); } } Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 23. Testando o WebService I no exemplo anterior, basta acessar a URI a partir de qualquer navegador, que será mostrado um XML. Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 24. Testando o WebService I no exemplo anterior, basta acessar a URI a partir de qualquer navegador, que será mostrado um XML. I às vezes, iremos necessitar de uma ferramenta mais elaborada para configurar a requisição (PUT, POST ou DELETE) ou para enviar dados no formato XML. No Linux, podemos utilizar o comando curl para fazer diferentes tipos de requisições. curl http://localhost:9999/livros Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 25. Testando o WebService I no exemplo anterior, basta acessar a URI a partir de qualquer navegador, que será mostrado um XML. I às vezes, iremos necessitar de uma ferramenta mais elaborada para configurar a requisição (PUT, POST ou DELETE) ou para enviar dados no formato XML. No Linux, podemos utilizar o comando curl para fazer diferentes tipos de requisições. curl http://localhost:9999/livros I outra opção, para quem utiliza Firefox, é o add-on Poster, que também permite configurar as requisições antes de serem enviadas. Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 26. Exemplo com JSON Um livro em XML: <livro> <autor>Orwell</autor> <titulo>1984</titulo> <id>42</id> </livro> Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 27. Exemplo com JSON Um livro em XML: <livro> <autor>Orwell</autor> <titulo>1984</titulo> <id>42</id> </livro> Um livro em JSON: { "autor": "George Orwell", "titulo": "1984", "id": 42 } Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 28. Exemplo com JSON Um livro em XML: <livro> <autor>Orwell</autor> <titulo>1984</titulo> <id>42</id> </livro> Um livro em JSON: { "autor": "George Orwell", "titulo": "1984", "id": 42 } A vantagem do JSON sobre o XML ocorre principalmente nas requisições em AJAX, pois não existe um parser nativo para XML em Javascript. Desse modo, requisições em AJAX que utilizam JSON são mais simples. Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 29. Exemplo com JSON @GET @Produces("application/json") public List<Livro> getLivrosEmJson() { // busca livros na base de dados return livros; } Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 30. Exemplo com JSON @GET @Produces("application/json") public List<Livro> getLivrosEmJson() { // busca livros na base de dados return livros; } A URI é a mesma, o que muda é o cabeçalho da requisição, que deve incluir um campo "Accept:application/json". Veja o exemplo com curl: curl -H "Accept:application/json" http://localhost:9999/livros Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 31. Conclusão O Jersey é simples de usar e altamente customizável, se tornando uma opção recomendada para criar APIs baseadas em URLs. Alexandre Macedo Restful WebServices em Java www.k19.com.br
  • 32. Obrigado! Dúvidas ou sugestões: contato@k19.com.br Para acompanhar as novidades confira o site: www.k19.com.br Ou siga-nos no Twitter: @k19treinamentos