1. REST e o futuro das aplicações web
Rafael Nunes - www.yaw.com.br
2. 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
3. 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
4. HTTP
Hiper Text Transfer 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
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
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 State Transfer
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 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)
17. 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?
18. 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
19. Exemplos
REST como camada web
REST como camada de integração
REST como API programável
20. Conclusão
REST é principalmente sobre:
Simplicidade
Possibilidades