REST e o futuro das aplicações web
Rafael Nunes - www.yaw.com.br
Rafael Nunes

 Desenvolvedor há mais de uma década

 Sócio da YaW

 Java, Python e outras coisas menos glamurosas(ASP,
  VDF7)

 Atualmente prestando consultoria para o mercado
  financeiro

 Instrutor da Globalcode há 6 anos
A web, esta velha desconhecida

 Mais importante que aprender a última tecnologia da
  moda, é compreender os fundamentos que a suportam

 A Web tem sido fundamentalmente a mesma nas
  últimas décadas

 HTTP – o protocolo que move o mundo
HTTP

 Hiper Text Transfer Protocol

 Dos tempos imemoriaveis da ARPA NET

 Transferência de hipertexto

 www.pudim.com.br - facebook.com
Dissecando o HTTP - Request

 Abre uma conexão TCP

 Monta envelope de request:
   Cabeçalho: Informações sobre o
    usuário/máquina/navegador/sistema operacional/infos da
    requisição
   Corpo: Dados para o processamento da requisição
   Anexo: Em caso de upload de arquivo

 Envia envelope para processamento no servidor
Dissecando o HTTP - Response

 Recebe envelope para processamento

 Interpreta requisição do usuário

 Monta envelope de resposta:
   Cabeçalho: infos do servidor/infos do conteúdo de
    resposta/tamanho da resposta
   Corpo: Conteúdo da resposta
   Anexo: Em caso de download de arquivo

 Envia envelope e FECHA A CONEXÃO!
HTTP - Características

 Stateless/ Sem estado

 Não mantém uma conexão de vida longa entre cliente
  e servidor

 Virtude ou limitação?

 Comet, HTTP push, HTTP reverso foram criados para
  manter estado
HTTP - Caracterísicas

 Síncrono

 Não há resposta sem requisição

 Efeito da natureza stateless

 Ajax, (Long) Pooling
HTTP - Características

 E as sessões?

 A má notícia é que elas não existem

 A boa notícia é que temos boas alternativas para
  contornar esta característica

 Mas……eu preciso mesmo de sessão na web, o tempo
  todo?
Web atual

 Estamos em um momento de transição:
   A web ‘tradicional’
   HTML5 e suas novas tecnologias(localStorage, session
    storage, websockets, SPDY, etc)

 REST tem sido ainda mais crucial para a nova web que
  estamos construindo
Web como plataforma

 O que é uma requisição HTTP?
  R: Uma representação de determinado recurso no
  servidor web em determinado momento.
  Ex. http://www.yaw.com.br/screencasts.html
REST

 Representation State Transfer

 A proposta é continuar com o que temos feito, mas
  utilizando verdadeiramente o protocolo HTTP
REST

 HTTP é feito de verbos

 Que ver algo? GET, HEAD, TRACE

 Quer modificar algo? PUT, POST, DELETE
REST

 HTTP é feito de status:

 Foi tudo bem? 20x

 O que eu procuro não está mais ai? 30x

 Não pedi do jeito certo? 40x

 Houve algum problema? 50x
REST e JEE

 Especificado pela JSR 127

 JAX-RS e Jersey é a implementação de referência

 Diversos outros frameworks: RestEasy, SpringMVC, CXF
REST como camada web

 É possível criar uma arquitetura REST com JEE desde
  sempre, com servlets

 Não há acoplamento entre cliente e servidor

 Cliente pode ser com JSP+JQuery

 De quebra ganha uma API de acesso para outras
  interfaces(Desktop, Mobile, etc)

 REST utiliza outras tecnologias(XML, JSON)
REST como camada de integração

 Como integramos sistemas?
   Banco de dados
   Arquivo txt
   WebService SOAP(run to the hills)

 Tem funcionado há algumas décadas, e não há nada
  de errado. Mas não tem uma forma mais simples?
REST como camada de serviços

 O que é sua aplicação?(regras de negócio?
  Tecnologias, telas e interfaces?)

 Ela pode(e talvez deva) ser isso tudo.

 Sua aplicação deve ter uma API(Application
  Programming Interface) pública

 Esta API é quem vai criar um ecossistema em volta da
  sua aplicação
Exemplos

 REST como camada web

 REST como camada de integração

 REST como API programável
Conclusão

 REST é principalmente sobre:

 Simplicidade

 Possibilidades
Perguntas?

rafael@yaw.com.br

twitter.com/rafanunes

twitter.com/youandwe

www.yaw.com.br

REST and JEE

  • 1.
    REST e ofuturo das aplicações web Rafael Nunes - www.yaw.com.br
  • 2.
    Rafael Nunes  Desenvolvedorhá mais de uma década  Sócio da YaW  Java, Python e outras coisas menos glamurosas(ASP, VDF7)  Atualmente prestando consultoria para o mercado financeiro  Instrutor da Globalcode há 6 anos
  • 3.
    A web, estavelha desconhecida  Mais importante que aprender a última tecnologia da moda, é compreender os fundamentos que a suportam  A Web tem sido fundamentalmente a mesma nas últimas décadas  HTTP – o protocolo que move o mundo
  • 4.
    HTTP  Hiper TextTransfer Protocol  Dos tempos imemoriaveis da ARPA NET  Transferência de hipertexto  www.pudim.com.br - facebook.com
  • 5.
    Dissecando o HTTP- Request  Abre uma conexão TCP  Monta envelope de request:  Cabeçalho: Informações sobre o usuário/máquina/navegador/sistema operacional/infos da requisição  Corpo: Dados para o processamento da requisição  Anexo: Em caso de upload de arquivo  Envia envelope para processamento no servidor
  • 6.
    Dissecando o HTTP- Response  Recebe envelope para processamento  Interpreta requisição do usuário  Monta envelope de resposta:  Cabeçalho: infos do servidor/infos do conteúdo de resposta/tamanho da resposta  Corpo: Conteúdo da resposta  Anexo: Em caso de download de arquivo  Envia envelope e FECHA A CONEXÃO!
  • 7.
    HTTP - Características Stateless/ Sem estado  Não mantém uma conexão de vida longa entre cliente e servidor  Virtude ou limitação?  Comet, HTTP push, HTTP reverso foram criados para manter estado
  • 8.
    HTTP - Caracterísicas Síncrono  Não há resposta sem requisição  Efeito da natureza stateless  Ajax, (Long) Pooling
  • 9.
    HTTP - Características E as sessões?  A má notícia é que elas não existem  A boa notícia é que temos boas alternativas para contornar esta característica  Mas……eu preciso mesmo de sessão na web, o tempo todo?
  • 10.
    Web atual  Estamosem um momento de transição:  A web ‘tradicional’  HTML5 e suas novas tecnologias(localStorage, session storage, websockets, SPDY, etc)  REST tem sido ainda mais crucial para a nova web que estamos construindo
  • 11.
    Web como plataforma O que é uma requisição HTTP? R: Uma representação de determinado recurso no servidor web em determinado momento. Ex. http://www.yaw.com.br/screencasts.html
  • 12.
    REST  Representation StateTransfer  A proposta é continuar com o que temos feito, mas utilizando verdadeiramente o protocolo HTTP
  • 13.
    REST  HTTP éfeito de verbos  Que ver algo? GET, HEAD, TRACE  Quer modificar algo? PUT, POST, DELETE
  • 14.
    REST  HTTP éfeito de status:  Foi tudo bem? 20x  O que eu procuro não está mais ai? 30x  Não pedi do jeito certo? 40x  Houve algum problema? 50x
  • 15.
    REST e JEE Especificado pela JSR 127  JAX-RS e Jersey é a implementação de referência  Diversos outros frameworks: RestEasy, SpringMVC, CXF
  • 16.
    REST como camadaweb  É possível criar uma arquitetura REST com JEE desde sempre, com servlets  Não há acoplamento entre cliente e servidor  Cliente pode ser com JSP+JQuery  De quebra ganha uma API de acesso para outras interfaces(Desktop, Mobile, etc)  REST utiliza outras tecnologias(XML, JSON)
  • 17.
    REST como camadade integração  Como integramos sistemas?  Banco de dados  Arquivo txt  WebService SOAP(run to the hills)  Tem funcionado há algumas décadas, e não há nada de errado. Mas não tem uma forma mais simples?
  • 18.
    REST como camadade serviços  O que é sua aplicação?(regras de negócio? Tecnologias, telas e interfaces?)  Ela pode(e talvez deva) ser isso tudo.  Sua aplicação deve ter uma API(Application Programming Interface) pública  Esta API é quem vai criar um ecossistema em volta da sua aplicação
  • 19.
    Exemplos  REST comocamada web  REST como camada de integração  REST como API programável
  • 20.
    Conclusão  REST éprincipalmente sobre:  Simplicidade  Possibilidades
  • 21.