SlideShare une entreprise Scribd logo
1  sur  62
Télécharger pour lire hors ligne
De Web Services RESTFul a
aplicações Mashups




Wagner Roberto dos Santos
  Arquiteto Software/Scrum Master
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/
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
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...
Afinal, o que é REST?

Como por exemplo ....




                        ... a própria WEB.
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.
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
Afinal, O que é REST?
  Clientes Web    Servidores
Afinal, O que é REST?
Recursos Web
Afinal, O que é REST?
Media Types

atom+xml
xhtml+xml
mpeg4-generic
jpeg
html
3gpp-tt
form-data
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
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
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
Afinal, O que é REST?
Representações
em diversos sabores..

 XML
 JSON
 (X)HTML
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
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.
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.
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 >
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.
JAX –RS - Java API for RESTful Web Services
                  JSR-311
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.
JAX - RS

Implementações conhecidas




Jersey
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.
JAX - RS
Acessando os Recursos

@GET
@POST
@PUT
@DELETE
@HEAD
@HttpMethod(“MétodoCustomizado”)

e devem ser atribuídas a métodos públicos
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) { ... }
.
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
}
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.
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);
   }
}
JAX - RS
Extraindo valores da URI na Requisição
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();
}
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.
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);
 }
JAX - RS




Consumindo e Testando Serviços
           RESTful
Consumindo e Testando Serviços REST
 RESTClient
Consumindo e Testando Serviços REST
 cURL
Consumindo e Testando Serviços REST
 NetBeans
Consumindo e Testando Serviços REST

  Consumindo Serviços RESTful
   JAXB
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;
     }
  ..}
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);
   }
}
Consumindo e Testando Serviços REST

  Bibliotecas JavaScript.
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");
        }
    });
});
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);
    }
});
Enfim, Mashups




            Mashups
Mashups
 Definições:

 Aplicação Web composta de Serviços
  existentes e dados.

 Utiliza APIs abertas de outras aplicações
  Web.
Mashups
 Propriedades:

 Pouco esforço de programação.
    Diversas ferramentas (Maioria baseada em
     JavaScript e (X)HTML)


 Aplicações Web Interativas
Mashups
 Propriedades:
  Agrega conteúdo de mais de uma fonte.
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
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.
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
Mashups

Segurança

Token
Baseada em Sessão / Hash
Baseada em URL – chave de API
Content Type utilizando Autenticação
Mashups
          Arquitetura de um Mashup
Mashups

                                      Por que não
                                        utilizar
                                      Web Services
                                     SOAP ou WS* ?




Veja: http://netfeijao.blogspot.com/2009/05/web-services-ws-vs-rest.html
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
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.
Ferramentas
Mashups - Ferramentas
Yahoo Pipes!
Mashups - Ferramentas
Mashups – Ferramentas
Mashups - Ferramentas
Mashups - Ferramentas
Mashups
De Web Services REST aos Mashups




  OBRIGADO
  Contatos
  Email: wrsconsulting@gmail.com
  Blog: http://netfeijao.blogspot.com
  Twitter: http://twitter.com/wrsantos

Contenu connexe

Tendances

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!
 
Ajax O Objeto Xml Http Request Parte 4
Ajax   O Objeto Xml Http Request   Parte 4Ajax   O Objeto Xml Http Request   Parte 4
Ajax O Objeto Xml Http Request Parte 4infinitopublicidade
 
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
 
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
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)Bruno Pedro
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - BrazilStephen Chin
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineOtávio Calaça Xavier
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
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
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Helder da Rocha
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsEduardo Mendes
 
Maratona JBoss 2010 - JBoss-ESB
Maratona JBoss 2010 - JBoss-ESBMaratona JBoss 2010 - JBoss-ESB
Maratona JBoss 2010 - JBoss-ESBDextra
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopAlexei Znamensky
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web ServicesFabio Leal
 
Plataforma Zope Plone na PGR
Plataforma Zope Plone na PGRPlataforma Zope Plone na PGR
Plataforma Zope Plone na PGRLucas Brasilino
 
O novo protocolo http 2.0: uma revolução na Internet?
O novo protocolo http 2.0: uma revolução na Internet?O novo protocolo http 2.0: uma revolução na Internet?
O novo protocolo http 2.0: uma revolução na Internet?Elmano Cavalcanti
 

Tendances (20)

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
 
Ajax O Objeto Xml Http Request Parte 4
Ajax   O Objeto Xml Http Request   Parte 4Ajax   O Objeto Xml Http Request   Parte 4
Ajax O Objeto Xml Http Request Parte 4
 
Web Services Rest
Web Services RestWeb Services Rest
Web Services Rest
 
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
 
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
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
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)
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
 
Maratona JBoss 2010 - JBoss-ESB
Maratona JBoss 2010 - JBoss-ESBMaratona JBoss 2010 - JBoss-ESB
Maratona JBoss 2010 - JBoss-ESB
 
Rest
RestRest
Rest
 
Rest Teoria E Pratica
Rest Teoria E PraticaRest Teoria E Pratica
Rest Teoria E Pratica
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web Services
 
Plataforma Zope Plone na PGR
Plataforma Zope Plone na PGRPlataforma Zope Plone na PGR
Plataforma Zope Plone na PGR
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
O novo protocolo http 2.0: uma revolução na Internet?
O novo protocolo http 2.0: uma revolução na Internet?O novo protocolo http 2.0: uma revolução na Internet?
O novo protocolo http 2.0: uma revolução na Internet?
 

En vedette

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
 
Trabalho de Sistemas Distribuídos
Trabalho de Sistemas DistribuídosTrabalho de Sistemas Distribuídos
Trabalho de Sistemas DistribuídosJuliana Cindra
 
Sistemas distribuidos intro
Sistemas distribuidos  introSistemas distribuidos  intro
Sistemas distribuidos introOscar Quiroz
 
Performance Management of IT Service Processes Using a Mashup-based Approach
Performance Management of IT Service Processes Using a Mashup-based ApproachPerformance Management of IT Service Processes Using a Mashup-based Approach
Performance Management of IT Service Processes Using a Mashup-based ApproachCarlos Raniery
 
Mashups e Modelagem Quantitativa Usando Padrões de Mashup com foco no Gerenci...
Mashups e Modelagem Quantitativa Usando Padrões de Mashup com foco no Gerenci...Mashups e Modelagem Quantitativa Usando Padrões de Mashup com foco no Gerenci...
Mashups e Modelagem Quantitativa Usando Padrões de Mashup com foco no Gerenci...Carlos Raniery
 
Sistemas de Informações Gerenciais - Aula4
Sistemas de Informações Gerenciais - Aula4Sistemas de Informações Gerenciais - Aula4
Sistemas de Informações Gerenciais - Aula4Leandro Rezende
 
Sistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – MiddlewareSistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – MiddlewareAdriano Teixeira de Souza
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Regis Magalhães
 
Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02Arthur Emanuel
 
RESTful Web Services with Jersey
RESTful Web Services with JerseyRESTful Web Services with Jersey
RESTful Web Services with JerseyScott Leberknight
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebRafael Chagas
 
1ª lista de exercícios de pesquisa operacional com gabarito
1ª lista de exercícios de pesquisa operacional   com gabarito1ª lista de exercícios de pesquisa operacional   com gabarito
1ª lista de exercícios de pesquisa operacional com gabaritoAntonio Rodrigues
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídosEduardo de Lucena Falcão
 
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...Marcelo Schumacher
 

En vedette (17)

Web Services
Web ServicesWeb Services
Web Services
 
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
 
Mashups - SOA
Mashups - SOAMashups - SOA
Mashups - SOA
 
Trabalho de Sistemas Distribuídos
Trabalho de Sistemas DistribuídosTrabalho de Sistemas Distribuídos
Trabalho de Sistemas Distribuídos
 
Sistemas distribuidos intro
Sistemas distribuidos  introSistemas distribuidos  intro
Sistemas distribuidos intro
 
Performance Management of IT Service Processes Using a Mashup-based Approach
Performance Management of IT Service Processes Using a Mashup-based ApproachPerformance Management of IT Service Processes Using a Mashup-based Approach
Performance Management of IT Service Processes Using a Mashup-based Approach
 
Mashups e Modelagem Quantitativa Usando Padrões de Mashup com foco no Gerenci...
Mashups e Modelagem Quantitativa Usando Padrões de Mashup com foco no Gerenci...Mashups e Modelagem Quantitativa Usando Padrões de Mashup com foco no Gerenci...
Mashups e Modelagem Quantitativa Usando Padrões de Mashup com foco no Gerenci...
 
Sistemas de Informações Gerenciais - Aula4
Sistemas de Informações Gerenciais - Aula4Sistemas de Informações Gerenciais - Aula4
Sistemas de Informações Gerenciais - Aula4
 
Sistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – MiddlewareSistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – Middleware
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011
 
Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02
 
RESTful Web Services with Jersey
RESTful Web Services with JerseyRESTful Web Services with Jersey
RESTful Web Services with Jersey
 
Aula 6 - Gerenciamento de Escopo
Aula 6 - Gerenciamento de EscopoAula 6 - Gerenciamento de Escopo
Aula 6 - Gerenciamento de Escopo
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na Web
 
1ª lista de exercícios de pesquisa operacional com gabarito
1ª lista de exercícios de pesquisa operacional   com gabarito1ª lista de exercícios de pesquisa operacional   com gabarito
1ª lista de exercícios de pesquisa operacional com gabarito
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídos
 
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...
 

Similaire à De Web Services RESTful a Aplicações Mashup

Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0jesuinoPower
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com SpringMateus Malaquias
 
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiInterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiiMasters
 
Rest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasyRest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasyArthur Cesar Oreana
 
HTTP, Requisição e Resposta
HTTP, Requisição e RespostaHTTP, Requisição e Resposta
HTTP, Requisição e RespostaThiago Rondon
 
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
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Servlet jsp tomcat 8
Servlet jsp tomcat 8Servlet jsp tomcat 8
Servlet jsp tomcat 8maxrosan
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EERodrigo Cândido da Silva
 
QCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EEQCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EERodrigo Cândido da Silva
 
Web 2.0 e RIA com PHP
Web 2.0 e RIA com PHPWeb 2.0 e RIA com PHP
Web 2.0 e RIA com PHPAdler Medrado
 

Similaire à De Web Services RESTful a Aplicações Mashup (20)

Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
API Apontador
API ApontadorAPI Apontador
API Apontador
 
Rest workshop
Rest workshopRest workshop
Rest workshop
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
 
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiInterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
 
Rest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasyRest In Peace com JBOSS RESTEasy
Rest In Peace com JBOSS RESTEasy
 
REST and JEE
REST and JEEREST and JEE
REST and JEE
 
HTTP, Requisição e Resposta
HTTP, Requisição e RespostaHTTP, Requisição e Resposta
HTTP, Requisição e Resposta
 
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
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
GUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EEGUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EE
 
Servlet jsp tomcat 8
Servlet jsp tomcat 8Servlet jsp tomcat 8
Servlet jsp tomcat 8
 
REST com Python
REST com PythonREST com Python
REST com Python
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
 
QCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EEQCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EE
 
Web service
Web serviceWeb service
Web service
 
dnad12
dnad12dnad12
dnad12
 
Web Services
Web ServicesWeb Services
Web Services
 
Web 2.0 e RIA com PHP
Web 2.0 e RIA com PHPWeb 2.0 e RIA com PHP
Web 2.0 e RIA com PHP
 

Plus de Wagner Roberto dos Santos

Plus de Wagner Roberto dos Santos (7)

Tdc2013 Inspecionando antes da adoção
Tdc2013 Inspecionando antes da adoçãoTdc2013 Inspecionando antes da adoção
Tdc2013 Inspecionando antes da adoção
 
TDC2013 Escalando Aplicações Java com In Memory Datagrids
TDC2013 Escalando Aplicações Java com In Memory DatagridsTDC2013 Escalando Aplicações Java com In Memory Datagrids
TDC2013 Escalando Aplicações Java com In Memory Datagrids
 
Infinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com JavaInfinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com Java
 
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
 
Continuous Delivery e DevOps
Continuous Delivery e DevOpsContinuous Delivery e DevOps
Continuous Delivery e DevOps
 
Como Se Dar Bem Com Java
Como Se Dar Bem Com JavaComo Se Dar Bem Com Java
Como Se Dar Bem Com Java
 
Como me dei bem com Java
Como me dei bem com JavaComo me dei bem com Java
Como me dei bem com Java
 

De Web Services RESTful a Aplicações Mashup

  • 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.
  • 62. De Web Services REST aos Mashups OBRIGADO Contatos Email: wrsconsulting@gmail.com Blog: http://netfeijao.blogspot.com Twitter: http://twitter.com/wrsantos