De Web Services RESTful a Aplicações Mashup
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

De Web Services RESTful a Aplicações Mashup

on

  • 4,272 views

Palestra "De Web Services RESTful a Aplicações Mashup" apresentada no Just Java 2009 por Wagner Roberto dos Santos

Palestra "De Web Services RESTful a Aplicações Mashup" apresentada no Just Java 2009 por Wagner Roberto dos Santos

Statistics

Views

Total Views
4,272
Views on SlideShare
4,034
Embed Views
238

Actions

Likes
2
Downloads
87
Comments
1

9 Embeds 238

http://netfeijao.blogspot.com 141
http://netfeijao.blogspot.com.br 81
http://www.slideshare.net 9
http://www.linkedin.com 2
http://translate.googleusercontent.com 1
http://www.netfeijao.blogspot.com 1
http://netfeijao.blogspot.pt 1
http://netfeijao.blogspot.co.uk 1
http://netfeijao.blogspot.ch 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

De Web Services RESTful a Aplicações Mashup Presentation Transcript

  • 1. De Web Services RESTFul a aplicações Mashups Wagner Roberto dos Santos Arquiteto Software/Scrum Master
  • 2. Apresentação • Arquiteto Java EE / Scrum Master • Lead Editor da Queue Arquitetura do Portal InfoQ Brasil (http://infoq.com/br). • Participação nos projetos de tradução e teste do NetBeans. • Palestrante de eventos como Just Java, Sun Tech Days, Campus Party. • Premiações em competições de tecnologia . • Autor de artigos para as revistas Mundo Java e Java Magazine. • Participação em diversos projetos Open Source. • Certificações: SCJA, SCJP, SCSNI, SCJWSD, SCBCD, SCEA (I), CSM. • Mantém o blog http://netfeijao.blogspot.com/
  • 3. Agenda O que é REST? JAX-RS – Java API for RESTful Web Services Consumindo e testando serviços REST O que são Mashups? Aprendendo a partir de Exemplos Ferramentas Criando suas próprias APIs Conclusão
  • 4. Afinal, o que é REST? REST = REpresentational State Transfer REST ≠ Tecnologia REST ≠ Padrão REST = Estilo de Arquitetura Estilo de arquitetura de software para sistemas hipermídia distribuídos...
  • 5. Afinal, o que é REST? Como por exemplo .... ... a própria WEB.
  • 6. O Pai da Criança Autor da especificação HTTP. Em 2000, apresentou como tese para seu doutorado uma nova forma de integrar sistemas multimídia, chamada REST.’ Doutor Roy Fielding.
  • 7. Afinal, O que é REST? HTTP Request Host: www.mundojava.com.br netfeijao.blogspot.com User-Agent: Mozilla/5.0 Accept: text/html,application/xhtml+xml,application/xml Accept-Language: pt-br,pt Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Proxy-Connection: keep-alive Referer: http://netfeijao.blogpost.com/ http://netfeijao.blogspot.com Servidor Web HTTP RESPONSE Content-Type: text/html; charset=UTF-8 Response (página) Expires: Mon, 14 Sep 2009 15:09:37 GMT Date: Mon, 14 Sep 2009 15:09:37 GMT Cache-Control: public, max-age=0, proxy- revalidate, must-revalidate Last-Modified: Fri, 11 Sep 2009 15:51:25 GM X-Content-Type-Options: nosniff Server: GFE/2.0 Cliente Content-Length: 39062 Content-Encoding: gzip Age: 0 200 OK
  • 8. Afinal, O que é REST? Clientes Web Servidores
  • 9. Afinal, O que é REST? Recursos Web
  • 10. Afinal, O que é REST? Media Types atom+xml xhtml+xml mpeg4-generic jpeg html 3gpp-tt form-data
  • 11. Afinal, O que é REST? Recursos e Representações URI – Uniform Resource Identifier Identificador único de um recurso físico ou abstrato. URN: Uniform Resource Name Uma URI pode ser classificada como: URL: Uniform Resource Locator
  • 12. Afinal, O que é REST? URI – Uniform Resource Identifier Exemplos ftp://ftp.is.co.za/rfc/rfc1808.txt http://www.ietf.org/rfc/rfc2396.txt ldap://[2001:db8::7]/c=GB?objectClass?one mailto:John.Doe@example.com news:comp.infosystems.www.servers.unix tel:+1-816-555-1212 telnet://192.0.2.16:80/ urn:oasis:names:specification:docbook:dtd:xml:4.1.2
  • 13. Afinal, O que é REST? O recurso é exposto pela URI http://www.justjava.com.br/palestrantes/wrsantos http://www.justjava.com.br/palestras/54811 Nome da Coleção de Recursos Chave Primária Definição de como URI mapeia o recurso
  • 14. Afinal, O que é REST? Representações em diversos sabores..  XML  JSON  (X)HTML
  • 15. Afinal, O que é REST? Representações Negociação de conteúdo. HTTP Request Host: justjava.com.br  XML User-Agent: Mozilla/5.0 Accept: application/json, application/xml  JSON Accept-Language: pt-br,pt Accept-Encoding: gzip,deflate justjava.com.br  (X)HTML Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Proxy-Connection: keep-alive Referer: http://justjava.com.br/ http://justjava.com.br/palestrantes/wrsantos Servidor Web
  • 16. Afinal, O que é REST? Métodos HTTP GET Solicita que o servidor envie um recurso. PUT O inverso do GET. Realiza operações de escrita no servidor. DELETE Solicita a exclusão de um recurso no servidor. POST Foi projetado para envio de dados de input, por exemplo, os dados de um formulário. HEAD Mesmo comportamento que o método GET, porém o servidor retorna apenas o cabeçalho da resposta.
  • 17. Afinal, O que é REST? Então REST é.. REpresentational State Transfer Recursos são identificados por URIs Métodos (verbos) HTTP para manipular os Recursos Representação é como você vê o Estado do Recurso.
  • 18. Afinal, O que é REST? Request justjava.com.br Exemplo: Host: justjava.com.br Accept: application/xml GET http://www.justjava.com.br/palestrantes/wrsantos Método (Verbo) Recurso RESPONSE HTTP/ 1.1 200 OK Content-Type: application/xml; charset=UTF-8 Date: Mon, 14 Sep 2009 15:09:37 GMT Server: GFE/2.0 Estado de <?xml version="1.0" encoding="UTF-8"?> Transferência <palestrante num_cpf="123456789"> <nome>Wagner</nome> <idade>29</idade> Representação <statusCivil>Casado</statusCivil> </ palestrante >
  • 19. Afinal, O que é REST? Códigos de Status Range Descrição 100-101 Informacional. 200-206 Sucesso. 300-305 Redirecionamento. 400-415 Erro do Cliente. 500-505 Erro do Servidor.
  • 20. JAX –RS - Java API for RESTful Web Services JSR-311
  • 21. JAX - RS Objetivos  Definida pela JSR-311.  Torna fácil construir código Java como um serviço REST  Uma alternativa aos Web Services SOAP com JAX-WS  Integração com WebBeans, EJB e JPA.
  • 22. JAX - RS Implementações conhecidas Jersey
  • 23. JAX - RS Trabalhando com Recursos Anotação @Path @Path("/palestrantes/{nome}") public class PalestranteREST{...} “/palestrantes/” é o prefixo da URI que a classe irá atender e {nome} é valor do parâmetro nome.
  • 24. JAX - RS Acessando os Recursos @GET @POST @PUT @DELETE @HEAD @HttpMethod(“MétodoCustomizado”) e devem ser atribuídas a métodos públicos
  • 25. JAX - RS Definindo as Representações Para tratamento de Request @Consumes Exemplo: @PUT @Consumes("application/xml","application/json") @Path("/autores/") public Response putPessoa(PessoaBinding pessoa) { ... } .
  • 26. JAX - RS Definindo as Representações Para tratamento de Response @Produces Exemplo: @GET @Produces({"application/xml", "application/json"}) public PessoaConverter getPessoa(@QueryParam("CPF") String numCPF) { // Retorna representação em XML ou JSON }
  • 27. JAX - RS Extraindo valores da URI na Requisição @PathParam Extrai um parâmetro informado no caminho da URI. @QueryParam Extrai um parâmetro informado no caminho da URI. @FormParam Extrai um parâmetro de formulário no body da requisição. @MatrixParam Extrai os valores (chave/valor) da matriz de parâmetros da URI. @CookieParam Extrai os valores de cookies vinculados a sessão. @HeaderParam Extrai dados do cabeçalho de uma requisição HTTP.
  • 28. JAX - RS Extraindo valores da URI na Requisição Exemplo: @Path("/Palestrantes/") public class EventoResource { @GET @Produces("application/xml") @Path("/autores/{nomeAutor}/") public PalestranteBinding getPessoa(@PathParam(“login") String loginName, @QueryParam(“tipo") int macroTema, @HeaderParam("CPF") String CPF, @MatrixParam(“ano") String anoEvento) { return new PalestranteBinding(loginName, macroTema, CPF, anoEvento); } }
  • 29. JAX - RS Extraindo valores da URI na Requisição
  • 30. JAX - RS Interface uniforme para Response @PUT @Consumes("application/xml") @Path("/Palestrantes/update/") public Response putPalestrante(PalestranteBinding pessoa){ String retorno = "<html><body><h1>Bem vindo "+pessoa. getNome()+"</h1></body></html>"; URI uri = // Pega a URI; return Response.created(uri). status(Response.Status.ACCEPTED). entity(retorno). type(MediaType.TEXT_HTML). build(); }
  • 31. JAX - RS Tratando Exceções A especificação define a exceção WebApplicationException que extende Runtime. • Pode ser lançada por um método de recurso. • Permite abortar a execução do serviço.
  • 32. JAX - RS Tratando Exceções @GET @Produces("application/xml") @Path("/autores/{palestrante}/{idade: [0-9]+}/") public PalestranteBinding getPalestrante( @PathParam(“palestrante") String name, @PathParam("idade") int idade, @HeaderParam("CPF") String numCPF) { if (idade <= 0 || idade > 120){ throw new WebApplicationException(Response.status(412). entity("Idade inválida!"). build()); } return new PalestranteBinding(name, idade, numCPF); }
  • 33. JAX - RS Consumindo e Testando Serviços RESTful
  • 34. Consumindo e Testando Serviços REST RESTClient
  • 35. Consumindo e Testando Serviços REST cURL
  • 36. Consumindo e Testando Serviços REST NetBeans
  • 37. Consumindo e Testando Serviços REST Consumindo Serviços RESTful JAXB
  • 38. Consumindo e Testando Serviços REST JAXB - Exemplo @XmlRootElement(name=“palestrante") @XmlType(name="", propOrder={"nome","idade","statusCivil"}) public class PalestranteBinding { /* Construtores, Atributos e Setters omitidos */ @XmlElement public String getNome() { return nome; } @XmlElement public int getIdade() { return idade; } @XmlAttribute(name="num_cpf") public String getCpf() { return cpf; } ..}
  • 39. Consumindo e Testando Serviços REST JAXB - Exemplo <?xml version="1.0" encoding="UTF-8"?> <palestrante num_cpf="123456789"> Classe JAXB Gera <nome>Wagner</nome> <idade>29</idade> <statusCivil>Casado</statusCivil> @Path("/Palestrantes/") </ palestrante > public class EventoResource { @GET @Produces("application/xml") @Path("/autores/{nomeAutor}/") public PalestranteBinding getPessoa(@PathParam(“nome") String nome, @PathParam(“idade") int idade, @HeaderParam("CPF") String CPF, @PathParam (“estadoCivil") String civil) { return new PalestranteBinding(nome, idade, CPF, civil); } }
  • 40. Consumindo e Testando Serviços REST Bibliotecas JavaScript.
  • 41. Consumindo e Testando Serviços REST Bibliotecas JavaScript - jQuery $.getJSON("http://api.flickr.com/services/rest/? method=flickr.photosets.getPhotos& photoset_id=72157614488723406 &format=json&jsoncallback=?", function(data){ $.each(data.photoset.photo, function(i,item){ if (item.title == foto){ $ ("<img/>").attr("src","http://farm"+item.farm+ ".static.flickr.com/"+item.server+"/"+item.id+"_"+ item.secret+"_m.jpg").appendTo("#foto"); } }); });
  • 42. Consumindo e Testando Serviços REST Bibliotecas JavaScript - jQuery var myUrl = "http://justjava.com.br/palestrantes/wrsantos“; $.ajax({ type: ‘DELETE’, url: myUrl, success: function(msg){ $("#alert").html(msg); } });
  • 43. Enfim, Mashups Mashups
  • 44. Mashups Definições: Aplicação Web composta de Serviços existentes e dados. Utiliza APIs abertas de outras aplicações Web.
  • 45. Mashups Propriedades: Pouco esforço de programação.  Diversas ferramentas (Maioria baseada em JavaScript e (X)HTML) Aplicações Web Interativas
  • 46. Mashups Propriedades:  Agrega conteúdo de mais de uma fonte.
  • 47. Mashups Formato de Dados  XML  Continua sendo importante.  Não é fácil fazer parsing no Browser.  RSS/ATOM  Mais do que notícias e Blogs  Troca de Dados  JSON  Formato Textual e Estrutura Simples  Mais fácil que XML  Uma linha: var oi = eval(codigo_JSON);  Útil para APIs públicas
  • 48. Mashups Overview em Mashups Client-Side  Tecnologia Centrada no Cliente  Prós  Facilidades em adicionar funcionalidades exportada  Não precisa de um componente server-side  Não ocorre latência de acesso a rede duas vezes  Não precisa de um plugin customizado para o Navegador  Contras  Devo confiar no fornecedor do serviço  API pode mudar.
  • 49. Mashups Componentes de uma biblioteca Client-Side  Criação de um serviço server-side.  Criação de um arquivo JScript para o client-side  Posso criar um arquivo CSS para o cliente-side  Posso documentar a API  Posso criar exemplos de demonstração
  • 50. Mashups Segurança Token Baseada em Sessão / Hash Baseada em URL – chave de API Content Type utilizando Autenticação
  • 51. Mashups Arquitetura de um Mashup
  • 52. Mashups Por que não utilizar Web Services SOAP ou WS* ? Veja: http://netfeijao.blogspot.com/2009/05/web-services-ws-vs-rest.html
  • 53. Mashups SOAP e WS-* Pontos Positivos Pontos Negativos •Diversas ferramentas de desenvolvimento. •Diversos padrões. •Tipagem forte e um vocabulário bem •Complexidade dos padrões. definido. •Performance. •Quando utilizado sobre HTTP, dificilmente é •Mensagens podem ficar muito bloqueado por proxies e firewalls. extensas, por serem codificadas •Permite o uso de diferentes tipos de com XML protocolos. •Plataforma independente. •Linguagem independente
  • 54. Mashups REST Pontos Positivos Pontos Negativos •Simplicidade, interface imutável, agnóstica. •Faltam padrões. •Interação assíncrona, não possui estado. •Falta de segurança. •Facilidade de adoção, pois não requer uma •Não é indicado para trafegar grande infra-estrutura, menos um middleware grandes volumes de parâmetros WS-* ou camada adicional. via URI. •Utiliza a web como meio de transporte, •Em muitas empresas apenas os sendo assim uma carga baixa na rede. métodos GET e POST do HTTP •Utilizada por grande parte das aplicações são liberados em proxies e Web 2.0. (Google, Flickr, Amazon, etc..). firewalls. Portanto, ótimo para mashups. •Não há mecanismos de transação. •Curva de aprendizagem baixa. •Não existe um padrão como UDDI.
  • 55. Ferramentas
  • 56. Mashups - Ferramentas Yahoo Pipes!
  • 57. Mashups - Ferramentas
  • 58. Mashups – Ferramentas
  • 59. Mashups - Ferramentas
  • 60. Mashups - Ferramentas
  • 61. Mashups
  • 62. De Web Services REST aos Mashups OBRIGADO Contatos Email: wrsconsulting@gmail.com Blog: http://netfeijao.blogspot.com Twitter: http://twitter.com/wrsantos