REST Web Services com        Java
Sobre● Programação ABAP● BI com a ferramenta Business Objects● Suporte ferramentas JBoss● Paralelamente:   ○ S2 programaçã...
Web Services● Tecnologia para integração de sistemas● Independência de plataforma● Utiliza padrões abertos(você não fica p...
http://www.arcwebservices.com/arcwebonline/services/soap_samples.htm?
REST● A WEB é um sucesso!● REST? Tese de Roy Fielding● "The idea of REST is essentially a reverse-engineering of how the W...
REST com HTTP● HTTP é perfeito para aplicarmos os princípios REST:    ○ Identificação através de URIs    ○ Interface unifo...
Uma requisição HTTP
RESTful WEB Services● Web Services que seguem os princípios REST● Restful Web Services é o livro!● Algo a acrescentar:    ...
Na prática● Recurso Cachorro   ○ GET /cachorro/{id}       Recupera   ○ DELETE /cachorro/{id}    Apaga   ○ POST /cachorro  ...
RESTful WEB Services com Java● Usar Servlets? Usar frameworks de terceiros não  padronizados? Nada disso!!● JAX-RS● Foco e...
A maneira JAX-RS de programar● Anote suas classes e métodos com @Path para dizer qual  URI seus métodos representam● Use @...
Exemplo          ● recuperaFoo responde a GET em            /foo/{id}, onde id é um número (            responde a /foo/66...
● Implementação de JAX-RS● Oferece mais que a especificação● É um projeto JBoss● Open Source● Características extra JAX-RS...
Uma API que usa RESTful WS● WEB Services REST para ler informações dos nossos  candidatos● Falha em alguns princípios REST...
Mais APIs que usam JAX-RS● Consumir APIs É TDB   ○ Twitter   ○ Facebook   ○ APIs do Google● Exemplo de um cliente simples ...
Além da apresentação● Livros:    ○ RESTful Web Services    ○ RESTful Java with JAX-RS    ○ REST In Practice*● WEB    ○ Tes...
Perguntas?
Muito Obrigado!
Upcoming SlideShare
Loading in...5
×

REST Web Services com Java

3,686

Published on

Apresentação realizada por William Antônio Siqueira para o 1º Encontro do JUG Vale sobre a criação de REST Web Services em Java(RESTful)

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,686
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
53
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

REST Web Services com Java

  1. 1. REST Web Services com Java
  2. 2. Sobre● Programação ABAP● BI com a ferramenta Business Objects● Suporte ferramentas JBoss● Paralelamente: ○ S2 programação, principalmente Java ○ JavaFX ○ Comunidades e fóruns ○ Projetos Open Source● Com WEB Services RESTful: ○ TCC ○ APIs RESTful ○ RESTEasy● Na WEB: ○ @william_antonio ○ http://williamantonio.wordpress.com
  3. 3. Web Services● Tecnologia para integração de sistemas● Independência de plataforma● Utiliza padrões abertos(você não fica preso a um vendedor)● Rock star em sistemas atuais● Baixo acoplamento entre quem consome e quem produz● WS-* e SOAP ○ Uma URL, um método HTTP, um formato ○ Muito código gerado (eca!) ○ HTTP é *desprezado* ○ Soluções dadas por grandes empresas com um "toque especial" = Estaca zero de novo! ○ Complexo? ○ Imensa discussão SOAP/WS X REST: http://bit. ly/s0Gofp
  4. 4. http://www.arcwebservices.com/arcwebonline/services/soap_samples.htm?
  5. 5. REST● A WEB é um sucesso!● REST? Tese de Roy Fielding● "The idea of REST is essentially a reverse-engineering of how the Web works" - Java SOA Cookbook● Um estilo arquitetural com os seguintes princípios ○ Foco em recursos ○ Identificação única de cada recurso ○ Interface uniforme ○ Stateless ○ Múltiplas representações de um mesmo recurso● Vantagens: ○ Escalabilidade ○ Simplicidade ○ Representa sua aplicação através de recursos ao invés de métodos não explicados (vantagem?)
  6. 6. REST com HTTP● HTTP é perfeito para aplicarmos os princípios REST: ○ Identificação através de URIs ○ Interface uniforme: ■ Verbos HTTP: GET, POST, PUT, DELETE... ■ Códigos informativos: 404, 201, 500 e outras dezenas...● Simples e praticamente acessível de qualquer linguagem de programação● HTTP é maduro e consolidado● Simples: ○ No cabeçalho da requisição informações como formatos de dados, codificação, linguagem, entre outras ○ No corpo da requisição a representação do recurso● Autenticação, encriptação, autorização: Use o que o HTTP oferece
  7. 7. Uma requisição HTTP
  8. 8. RESTful WEB Services● Web Services que seguem os princípios REST● Restful Web Services é o livro!● Algo a acrescentar: ○ GET sempre seguro ○ GET, PUT, DELETE idempotentes, POST não ○ Transações com REST ○ Como criar REST WS com Java, Ruby, Python● ROA - Resource Oriented Architeture● Comunidade em ação ○ Críticas a muitos WEB Services e APIs existente. São realmente REST? ○ HATEOAS - Ligar os recursos através de URIs para implementar o sistema. O cliente usa as URIs para a próxima iteração com o servidor
  9. 9. Na prática● Recurso Cachorro ○ GET /cachorro/{id} Recupera ○ DELETE /cachorro/{id} Apaga ○ POST /cachorro Cria ○ GET /cachorro Recupera todos● Formatos: XML e JSON● Códigos HTTP ○ 404 - Não encontrado ○ 500 - Erro desconhecido no servidor ○ 201 - Criado
  10. 10. RESTful WEB Services com Java● Usar Servlets? Usar frameworks de terceiros não padronizados? Nada disso!!● JAX-RS● Foco em POJOs e anotações● JSR 311 e JSR 339 (a caminho)● Aplicações JAX-RS podem rodar em um simples servlet contêiner● Acreditem em mim, programar em Java é prazeroso de novo!● Você não faz parse de XML nem JSON, nem de nenhum outro formato famoso● Você só anota e programa sua lógica de negócio● O livro da vez é RESTful Java with JAX-RS.
  11. 11. A maneira JAX-RS de programar● Anote suas classes e métodos com @Path para dizer qual URI seus métodos representam● Use @GET, @POST, @DELETE, @PUT para dizer qual o método HTTP● Use @Produces para determinar os formatos de dados que serão produzidos● JAX-RS usará os métodos acima para determinar qual método será chamado de acordo com a requisição HTTP● Pode usar uma interface para representar seus recursos● Use "templates" em Paths para injetar parâmetros que estão na URI através das anotações @PathParam e @QueryParam
  12. 12. Exemplo ● recuperaFoo responde a GET em /foo/{id}, onde id é um número ( responde a /foo/666, mas não a /foo/abc) ● criaFoo responde a POST em /foo ● apagaFoo responde a DELETE em /foo ● atualizaFoo responde a PUT em /foo cujo corpo da requisição contenha uma representação de Foo ● O método chamado é baseado nas informações da requisição HTTP
  13. 13. ● Implementação de JAX-RS● Oferece mais que a especificação● É um projeto JBoss● Open Source● Características extra JAX-RS: ○ Interceptores ○ API Cliente ○ Suporte a muitos formatos ○ Ligação de recursos ○ API JavaScript ○ Integração com Spring, EJB, CDI, outros ○ Suporte a testes e contêiner integrado para testes ○ Mais...
  14. 14. Uma API que usa RESTful WS● WEB Services REST para ler informações dos nossos candidatos● Falha em alguns princípios REST :(● Dados só em XML● Implementado com Jersey● Segunda versão a caminho● Publicada no ProgrammableWEB :O ○ http://www.programmableweb.com/api/brazilian-election- candidates● Código aberto :) ○ https://bitbucket.org/williamAntonio/elei-es-abertas● Demonstração "ao vivo" :) ○ http://williamprogrammer.com/EleicoesAbertas/
  15. 15. Mais APIs que usam JAX-RS● Consumir APIs É TDB ○ Twitter ○ Facebook ○ APIs do Google● Exemplo de um cliente simples do Last FM usando RESTEasy: ○ http://javafree.uol.com.br/artigo/882228/Um-simples- cliente-da-API-do-LastFM-com-RESTEasy.html● Entre no ProgrammableWeb.com e seja feliz. Vamos entrar? ○ http://www.programmableweb.com/apis/directory/1? protocol=REST
  16. 16. Além da apresentação● Livros: ○ RESTful Web Services ○ RESTful Java with JAX-RS ○ REST In Practice*● WEB ○ Tese do Roy Fielding ■ http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm ○ JAX-RS ■ http://jcp.org/en/jsr/detail?id=311 ■ http://jcp.org/en/jsr/detail?id=339 ■ http://www.jboss.org/resteasy ○ Blogs ■ http://blog.steveklabnik.com/2011/07/03/nobody- understands-rest-or-http.html ■ http://timelessrepo.com/haters-gonna-hateoas ■ http://martinfowler.com/articles/richardsonMaturityModel. html
  17. 17. Perguntas?
  18. 18. Muito Obrigado!
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×