SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

PDF
REST Web Services com Java
PDF
De Web Services RESTful a Aplicações Mashup
PDF
Consumindo dados via web service no android
PDF
PHP RESTful Web Services
PPTX
Android webservice
KEY
PHP RESTful Web Services - PHPConf'09
PDF
Criando e consumindo webservice REST com PHP e JSON
PDF
REST Web Services com Java
De Web Services RESTful a Aplicações Mashup
Consumindo dados via web service no android
PHP RESTful Web Services
Android webservice
PHP RESTful Web Services - PHPConf'09
Criando e consumindo webservice REST com PHP e JSON

Mais procurados (20)

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

Destaque (20)

PPT
JEE 6 e REST - O que vem por ai
PPTX
Web Services
PDF
Perspectivas em teste de software
PDF
O Abismo da Marca - Brand Gap
PDF
Minicourse - RiPLE : The RiSE Process for Product Line Engineering
PPTX
Rfs Scott Fain W Loan Mod
PPT
Nutrição Unisinos
PDF
ReviewFall14_F
DOC
Apostila sqlserver65v1a
PDF
Ana Arraes_O Globo
PDF
Edital 05 2013_cn_pq_gates
PPTX
Apresentação farma ago 11
PPTX
Matchbbin Technology
PPTX
Welcome to the UEL Library and Learning Services - Induction 2015
PPTX
0165 k2 b_mobile_la_empresa_en_sus_manos
PPTX
[EN] Aastra - Vertical Market - Industry
PDF
Guia dos Museus Brasileiros
PPTX
UCS Impact of Innovation
PPTX
ApresentaçãO Institucional InglêS 18.08.2009
JEE 6 e REST - O que vem por ai
Web Services
Perspectivas em teste de software
O Abismo da Marca - Brand Gap
Minicourse - RiPLE : The RiSE Process for Product Line Engineering
Rfs Scott Fain W Loan Mod
Nutrição Unisinos
ReviewFall14_F
Apostila sqlserver65v1a
Ana Arraes_O Globo
Edital 05 2013_cn_pq_gates
Apresentação farma ago 11
Matchbbin Technology
Welcome to the UEL Library and Learning Services - Induction 2015
0165 k2 b_mobile_la_empresa_en_sus_manos
[EN] Aastra - Vertical Market - Industry
Guia dos Museus Brasileiros
UCS Impact of Innovation
ApresentaçãO Institucional InglêS 18.08.2009
Anúncio

Semelhante a WebService Restful em Java (20)

PDF
Rest web services com Java
PDF
Novidades do JAX-RS 2.0
PDF
INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST
PDF
Introdução APIs RESTful
ODP
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
PPTX
Palestra Sobre REST
PDF
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
PDF
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
KEY
Do Rest Ao Restfull - Rio Jug
PDF
Construindo APIs RESTful com Spring
PDF
Design de RESTful APIs
PDF
Desenvolvimento de uma API RESTful com Java EE
PDF
Justjava 2012: REST Com Jax-RS e ExtJS 4
PDF
Trabalho final psdc
PDF
JavaOne Brazil 2011: Jax-RS e Ext JS 4
PDF
Curso Java (Parte 8) Web Service REST
PPTX
Android + web service
PDF
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
PPT
Web Services - Grupo F
PPTX
Web services com restful
Rest web services com Java
Novidades do JAX-RS 2.0
INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST
Introdução APIs RESTful
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Palestra Sobre REST
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
Do Rest Ao Restfull - Rio Jug
Construindo APIs RESTful com Spring
Design de RESTful APIs
Desenvolvimento de uma API RESTful com Java EE
Justjava 2012: REST Com Jax-RS e ExtJS 4
Trabalho final psdc
JavaOne Brazil 2011: Jax-RS e Ext JS 4
Curso Java (Parte 8) Web Service REST
Android + web service
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
Web Services - Grupo F
Web services com restful

Último (20)

PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PPTX
Émile Durkheim slide elaborado muito bom
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Apple Pippin Uma breve introdução. - David Glotz
Custos e liquidação no SAP Transportation Management, TM130 Col18
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Processos na gestão de transportes, TM100 Col18
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Émile Durkheim slide elaborado muito bom
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Aula sobre desenvolvimento de aplicativos
Curso de Java 9 - (Threads) Multitarefas.pptx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Apple Pippin Uma breve introdução. - David Glotz

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