SlideShare uma empresa Scribd logo
REST: Faça o Serviço Direito




3 de Novembro   PHP Conference 2011   1
Alexandre Gomes Gaigalas
http://about.me/alganet




3 de Novembro             PHP Conference 2011   2
Hoje você vai ver...
 ●
     Conceito: Por quê usar REST?

 ●
     Projeto: REST desde o berço

 ●
     Implementação: Ferramentas e técnicas




3 de Novembro         PHP Conference 2011    3
REST não é apenas para APIs.




3 de Novembro     PHP Conference 2011   4
3 de Novembro   PHP Conference 2011   5
Roy Fielding



3 de Novembro     PHP Conference 2011   6
Arquitetura

Como você organiza elementos de software para
          alcançar certos objetivos.




3 de Novembro     PHP Conference 2011           7
Arquitetura
                  Dados, componentes e conectores

Como você organiza elementos de software para
          alcançar certos objetivos.




3 de Novembro     PHP Conference 2011               8
Arquitetura
                                Dados, componentes e conectores

Como você organiza elementos de software para
          alcançar certos objetivos.
           Performance, escalabilidade, simplicidade, extensibilidade




3 de Novembro                    PHP Conference 2011                    9
Arquitetura
                                Dados, componentes e conectores

Como você organiza elementos de software para
          alcançar certos objetivos.
           Performance, escalabilidade, simplicidade, extensibilidade



                    Estilo Arquitetural
       Como você alcança certos objetivos com
      determinadas regras de organização dos
              elementos de software.

3 de Novembro                    PHP Conference 2011                    10
Arquitetura
                                Dados, componentes e conectores

Como você organiza elementos de software para
          alcançar certos objetivos.
           Performance, escalabilidade, simplicidade, extensibilidade



                    Estilo Arquitetural                          REST

       Como você alcança certos objetivos com
      determinadas regras de organização dos
              elementos de software.

3 de Novembro                    PHP Conference 2011                    11
Regra 1: Cliente-Servidor

 ●
     Portabilidade

 ●
     Escalabilidade

 ●




3 de Novembro         PHP Conference 2011   12
Regra 1: Cliente-Servidor

     Desktop, Mobile, API, etc.
 ●
     Portabilidade

 ●
     Escalabilidade

 ●




3 de Novembro                     PHP Conference 2011   13
Regra 1: Cliente-Servidor

     Desktop, Mobile, API, etc.
 ●
     Portabilidade
Múltiplos servidores e clientes
 ●
     Escalabilidade

 ●




3 de Novembro                     PHP Conference 2011   14
Regra 1: Cliente-Servidor

     Desktop, Mobile, API, etc.
 ●
     Portabilidade
Múltiplos servidores e clientes
 ●
     Escalabilidade
       http://futurefriend.ly
 ●




3 de Novembro                     PHP Conference 2011   15
Ferramentas Cliente-Servidor
 ●
     Apache HTTP Server
 ●
     nginx
 ●
     curl
 ●
     Zend_Http_Client
 ●
     github.com/educoder/pest
 ●
     ...



3 de Novembro        PHP Conference 2011   16
Nosso Projeto Imaginário
 ●
     Instalação em 10 servidores.
 ●
     API, Mobile, Desktop.




3 de Novembro           PHP Conference 2011   17
Regra 2: Sem Estado

 ●
     Visibilidade

 ●
     Confiabilidade

 ●
     Escalabilidade



3 de Novembro         PHP Conference 2011   18
Regra 2: Sem Estado

 Monitoramento, estatísticas
 ●
     Visibilidade

 ●
     Confiabilidade

 ●
     Escalabilidade



3 de Novembro                  PHP Conference 2011   19
Regra 2: Sem Estado

   Monitoramento, estatísticas
  ●
      Visibilidade
Recuperação de falhas simplificada
  ●
      Confiabilidade

  ●
      Escalabilidade



 3 de Novembro                   PHP Conference 2011   20
Regra 2: Sem Estado

   Monitoramento, estatísticas
  ●
      Visibilidade
Recuperação de falhas simplificada
  ●
      Confiabilidade
 Cache, balanceamento de carga
  ●
      Escalabilidade



 3 de Novembro                   PHP Conference 2011   21
Nosso Projeto Imaginário
 ●
     Instalação em 10 servidores.
 ●
     API, Mobile, Desktop.
 ●
     Autenticação via Digest/OAuth.
     ●
         Página auxiliar para navegadores.




3 de Novembro             PHP Conference 2011   22
Regra 3: Cache

 ●
     Eficiência

 ●
     Performance

 ●
     Escalabilidade



3 de Novembro         PHP Conference 2011   23
Regra 3: Cache

        Menos requisições
 ●
     Eficiência

 ●
     Performance

 ●
     Escalabilidade



3 de Novembro               PHP Conference 2011   24
Regra 3: Cache

        Menos requisições
 ●
     Eficiência
 Menor latência para o cliente
 ●
     Performance

 ●
     Escalabilidade



3 de Novembro                    PHP Conference 2011   25
Regra 3: Cache

        Menos requisições
 ●
     Eficiência
 Menor latência para o cliente
 ●
     Performance
Cache, balanceamento de carga
 ●
     Escalabilidade



3 de Novembro                    PHP Conference 2011   26
Ferramentas para Cache
 ●
     nginx
 ●
     Varnish Cache
 ●
     Apache mod_cache
 ●
     yslow pra testar




3 de Novembro           PHP Conference 2011   27
Nosso Projeto Imaginário
 ●
     Instalação em 10 servidores.
 ●
     API, Mobile, Desktop.
 ●
     Autenticação via Digest/OAuth.
     ●
         Página auxiliar para navegadores.
 ●
     Headers para cache.




3 de Novembro             PHP Conference 2011   28
Regra 4: Interface Uniforme
 ●
     Identificação de Recursos                   URIs



 ●
     Manipulação de Representações                      HTML, JPG, etc



 ●
     Mensagens auto-descritivas                 text/html, image/jpg



 ●
     Hipermídia   Links



3 de Novembro             PHP Conference 2011                            29
URI
 ●
     Identificação universal de recursos




3 de Novembro         PHP Conference 2011   30
URI
 ●
     Identificação universal de recursos
 ●
     Desacoplada da representação




3 de Novembro         PHP Conference 2011   31
URI
 ●
     Identificação universal de recursos
 ●
     Desacoplada da representação
 ●
     Vários esquemas de identificação
     ●
         http://dominio.com/path?query=123#hash
     ●
         ftp://user@server.net/path/arquivo.txt
     ●
         mailto:alexandre@gaigalas.net
     ●
         …



3 de Novembro            PHP Conference 2011      32
URI
 ●
     Identificação universal de recursos
 ●
     Desacoplada da representação
 ●
     Vários esquemas de identificação
     ●
         http://dominio.com/path?query=123#hash
     ●
         ftp://user@server.net/path/arquivo.txt
     ●
         mailto:alexandre@gaigalas.net
     ●
         …
 ●
     URIs legais não mudam =D

3 de Novembro            PHP Conference 2011      33
http://social.yahooapis.com/v1/user/12345/profile




3 de Novembro           PHP Conference 2011              34
http://social.yahooapis.com/v1/user/12345/profile

           Schema   Domain                     Path




3 de Novembro            PHP Conference 2011             35
http://social.yahooapis.com/v1/user/12345/profile

           Schema   Domain                     Path


 ●
     Representa um perfil




3 de Novembro            PHP Conference 2011             36
http://social.yahooapis.com/v1/user/12345/profile

           Schema   Domain                     Path


 ●
     Representa um perfil
 ●
     Desacoplado do formato de resposta
     ●
         Compreende negociação de conteúdo




3 de Novembro            PHP Conference 2011             37
http://social.yahooapis.com/v1/user/12345/profile

           Schema    Domain                     Path


 ●
     Representa um perfil
 ●
     Desacoplado do formato de resposta
     ●
         Compreende negociação de conteúdo
 ●
     Abstrai um recurso
     ●
         Aceita GET para obter perfil
     ●
         Aceita POST para atualizar perfil


3 de Novembro             PHP Conference 2011            38
REST em JSON é quase impossível.




3 de Novembro   PHP Conference 2011   39
Hipermídia

                Identificação absoluta

 ●
     href=”http://example.org/foobar”
           Identificação relativa ao domínio

 ●
     href=”/foobar”
           Identificação relativa ao esquema

 ●
     href=”//example.org/foobar”



3 de Novembro                    PHP Conference 2011   40
Regra 5: Camadas

Implementação independente
 ●
     Simplicidade
 Firewalls, segurança, proxies
 ●
     Extensibilidade
Cache, balanceamento de carga
 ●
     Escalabilidade



3 de Novembro                    PHP Conference 2011   41
Nosso Projeto Imaginário
 ●
     Instalação em 10 servidores.
 ●
     API, Mobile, Desktop.
 ●
     Autenticação via Digest/OAuth.
     ●
         Página auxiliar para navegadores.
 ●
     Headers para cache.
 ●
     Hipermídia HTML e XML.



3 de Novembro             PHP Conference 2011   42
Regra 5: Camadas

 ●
     Simplicidade

 ●
     Extensibilidade

 ●
     Escalabilidade



3 de Novembro          PHP Conference 2011   43
Regra 5: Camadas

Implementação independente
 ●
     Simplicidade

 ●
     Extensibilidade

 ●
     Escalabilidade



3 de Novembro                PHP Conference 2011   44
Regra 5: Camadas

Implementação independente
 ●
     Simplicidade
 Firewalls, segurança, proxies
 ●
     Extensibilidade

 ●
     Escalabilidade



3 de Novembro                    PHP Conference 2011   45
Nosso Projeto Imaginário
 ●
     Instalação em 10 servidores.
 ●
     API, Mobile, Desktop.
 ●
     Autenticação via Digest/OAuth.
     ●
         Página auxiliar para navegadores.
 ●
     Proxy-reverso e headers para cache.
 ●
     Hipermídia HTML e XML.



3 de Novembro             PHP Conference 2011   46
Regra Dica 6: Código sob Demanda
 ●
     CSS




 ●
     Javascript




3 de Novembro     PHP Conference 2011   47
Regra Dica 6: Código sob Demanda
 ●
     CSS                  Apresentação




 ●
     Javascript
                         Comportamento




3 de Novembro     PHP Conference 2011    48
Regra Dica 6: Código sob Demanda
 ●
     CSS                         Apresentação
     ●
         Estilos
     ●
         Media queries
     ●
         ...
 ●
     Javascript
                                Comportamento




3 de Novembro            PHP Conference 2011    49
Regra Dica 6: Código sob Demanda
 ●
     CSS                         Apresentação
     ●
         Estilos
     ●
         Media queries
     ●
         ...
 ●
     Javascript
                                Comportamento
     ●
         AJAX
     ●
         Feature Detection
     ●
         ...

3 de Novembro            PHP Conference 2011    50
Responsivo é RESTful
                                            Desktop

                                            Mobile




3 de Novembro         PHP Conference 2011             51
Ferramentas pra Código sob
                  Demanda

 ●
     Modernizr (http://modernizr.com)

 ●
     Frameless (http://framelessgrid.com)




3 de Novembro         PHP Conference 2011   52
Nosso Projeto Imaginário
 ●
     Instalação em 10 servidores.
 ●
     API, Mobile, Desktop.
 ●
     Autenticação via Digest/OAuth.
     ●
         Página auxiliar para navegadores.
 ●
     Proxy-reverso e headers para cache.
 ●
     Hipermídia HTML e XML.
 ●
     Versão Mobile/Desktop via Javascript sob
     demanda
3 de Novembro             PHP Conference 2011   53
Hoje você viu...
 ●
     Conceito: Por quê usar REST?

 ●
     Projeto: REST desde o berço

 ●
     Implementação: Ferramentas e técnicas




3 de Novembro        PHP Conference 2011     54
Perguntas?




3 de Novembro   PHP Conference 2011   55
Obrigado!
http://joind.in/4473




3 de Novembro          PHP Conference 2011   56

Mais conteúdo relacionado

PDF
PHP Maroto
PDF
As Mudanças Culturais do PHP
PDF
Varrendo APIs REST em Larga Escala utilizando PHP
PDF
Frameworks PHP
PPTX
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
PDF
Criptografia - como utilizar
ODP
Desenvolvimento web e PHP
PDF
Segurança em Aplicações Web com PHP
PHP Maroto
As Mudanças Culturais do PHP
Varrendo APIs REST em Larga Escala utilizando PHP
Frameworks PHP
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
Criptografia - como utilizar
Desenvolvimento web e PHP
Segurança em Aplicações Web com PHP

Destaque (20)

PDF
Arquiteturas de Software para o Século XXI
PDF
Arquiteturas Cloud na AWS: Uma Introducao
PDF
Arquiteturas Cloud: Uma Introdução
PDF
Sucesso profissional #dnad12
PDF
O mix sl_apr-oramix_abr2013 vglobal
PDF
Dell PowerEdge R920 and Microsoft SQL Server 2014 Migration and Benefits Guide
PPTX
Nova web - DNAD 2012
PDF
Difference between standlone hyper-v vs role based
PPTX
LIÇÃO 02 - A PROVISÃO DE DEUS EM TEMPOS DIFÍCEIS
PDF
Domine Validação de Dados em 45min
PDF
O Perfil do Profissional de Sucesso - ebook
PDF
Melhores práticas para Arquitetura em Cloud Computing
PDF
Continuous Deployment e DevOps na Nuvem
PDF
Backup e Disaster Recovery na Nuvem
PDF
Conhecendo as opcoes de Storage na Nuvem da AWS
PDF
Empregabilidade pdf
PDF
5. rodando containers docker na aws
PPT
Mercado de trabalho e Empregabilidade
PPSX
Estratégia vencer em meio a crise
PPTX
Habilidades do administrador slides
Arquiteturas de Software para o Século XXI
Arquiteturas Cloud na AWS: Uma Introducao
Arquiteturas Cloud: Uma Introdução
Sucesso profissional #dnad12
O mix sl_apr-oramix_abr2013 vglobal
Dell PowerEdge R920 and Microsoft SQL Server 2014 Migration and Benefits Guide
Nova web - DNAD 2012
Difference between standlone hyper-v vs role based
LIÇÃO 02 - A PROVISÃO DE DEUS EM TEMPOS DIFÍCEIS
Domine Validação de Dados em 45min
O Perfil do Profissional de Sucesso - ebook
Melhores práticas para Arquitetura em Cloud Computing
Continuous Deployment e DevOps na Nuvem
Backup e Disaster Recovery na Nuvem
Conhecendo as opcoes de Storage na Nuvem da AWS
Empregabilidade pdf
5. rodando containers docker na aws
Mercado de trabalho e Empregabilidade
Estratégia vencer em meio a crise
Habilidades do administrador slides
Anúncio

Semelhante a REST: Faça o Serviço Direito (20)

PDF
REST: Faça o Serviço Direito - TDC Goiânia
PDF
Webservices e Computação em Nuvem com PHP
PDF
FISL12. Web Services e Computação em Nuvem com PHP
KEY
PHP RESTful Web Services - PHPConf'09
PDF
PHP - O que, porquê e como
PDF
REST com Python
KEY
Desenvolvendo Aplicações com Zend Framework
PDF
PHP RESTful Web Services
PDF
Webservices
PDF
Técnicas para ser escalável com PHP
PDF
Rest Teoria E Pratica
PDF
PHP Turbinado com CodeIgniter - Conisli 2011
PDF
PHP, Gearman e Memcache
PDF
Integração de aplicações em
PDF
Frameworks de Desenvolvimento Web com PHP
PPT
PHP nas Nuvens
PDF
Integrando a Web Social e a Web Semântica com PHP
PDF
PHP: Atualidade e Tendências
KEY
Integração de Sistemas usando tecnologias open source
PDF
Serversidephp pptx2-120418140114-phpapp01
REST: Faça o Serviço Direito - TDC Goiânia
Webservices e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHP
PHP RESTful Web Services - PHPConf'09
PHP - O que, porquê e como
REST com Python
Desenvolvendo Aplicações com Zend Framework
PHP RESTful Web Services
Webservices
Técnicas para ser escalável com PHP
Rest Teoria E Pratica
PHP Turbinado com CodeIgniter - Conisli 2011
PHP, Gearman e Memcache
Integração de aplicações em
Frameworks de Desenvolvimento Web com PHP
PHP nas Nuvens
Integrando a Web Social e a Web Semântica com PHP
PHP: Atualidade e Tendências
Integração de Sistemas usando tecnologias open source
Serversidephp pptx2-120418140114-phpapp01
Anúncio

Mais de Alexandre Gaigalas (7)

PDF
Mágica com Manipulação de Imagens - TDC 2011 Goiânia
PDF
assertTrue($tdd) - Latinoware 2011
PDF
REST: Faça o Serviço Direito
PDF
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
PDF
HTTP: A Base do Desenvolvimento Web - FISL 12
PDF
GET /conceitos HTTP/1.1
PDF
assertTrue($tdd)
Mágica com Manipulação de Imagens - TDC 2011 Goiânia
assertTrue($tdd) - Latinoware 2011
REST: Faça o Serviço Direito
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
HTTP: A Base do Desenvolvimento Web - FISL 12
GET /conceitos HTTP/1.1
assertTrue($tdd)

REST: Faça o Serviço Direito

  • 1. REST: Faça o Serviço Direito 3 de Novembro PHP Conference 2011 1
  • 2. Alexandre Gomes Gaigalas http://about.me/alganet 3 de Novembro PHP Conference 2011 2
  • 3. Hoje você vai ver... ● Conceito: Por quê usar REST? ● Projeto: REST desde o berço ● Implementação: Ferramentas e técnicas 3 de Novembro PHP Conference 2011 3
  • 4. REST não é apenas para APIs. 3 de Novembro PHP Conference 2011 4
  • 5. 3 de Novembro PHP Conference 2011 5
  • 6. Roy Fielding 3 de Novembro PHP Conference 2011 6
  • 7. Arquitetura Como você organiza elementos de software para alcançar certos objetivos. 3 de Novembro PHP Conference 2011 7
  • 8. Arquitetura Dados, componentes e conectores Como você organiza elementos de software para alcançar certos objetivos. 3 de Novembro PHP Conference 2011 8
  • 9. Arquitetura Dados, componentes e conectores Como você organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade 3 de Novembro PHP Conference 2011 9
  • 10. Arquitetura Dados, componentes e conectores Como você organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade Estilo Arquitetural Como você alcança certos objetivos com determinadas regras de organização dos elementos de software. 3 de Novembro PHP Conference 2011 10
  • 11. Arquitetura Dados, componentes e conectores Como você organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade Estilo Arquitetural REST Como você alcança certos objetivos com determinadas regras de organização dos elementos de software. 3 de Novembro PHP Conference 2011 11
  • 12. Regra 1: Cliente-Servidor ● Portabilidade ● Escalabilidade ● 3 de Novembro PHP Conference 2011 12
  • 13. Regra 1: Cliente-Servidor Desktop, Mobile, API, etc. ● Portabilidade ● Escalabilidade ● 3 de Novembro PHP Conference 2011 13
  • 14. Regra 1: Cliente-Servidor Desktop, Mobile, API, etc. ● Portabilidade Múltiplos servidores e clientes ● Escalabilidade ● 3 de Novembro PHP Conference 2011 14
  • 15. Regra 1: Cliente-Servidor Desktop, Mobile, API, etc. ● Portabilidade Múltiplos servidores e clientes ● Escalabilidade http://futurefriend.ly ● 3 de Novembro PHP Conference 2011 15
  • 16. Ferramentas Cliente-Servidor ● Apache HTTP Server ● nginx ● curl ● Zend_Http_Client ● github.com/educoder/pest ● ... 3 de Novembro PHP Conference 2011 16
  • 17. Nosso Projeto Imaginário ● Instalação em 10 servidores. ● API, Mobile, Desktop. 3 de Novembro PHP Conference 2011 17
  • 18. Regra 2: Sem Estado ● Visibilidade ● Confiabilidade ● Escalabilidade 3 de Novembro PHP Conference 2011 18
  • 19. Regra 2: Sem Estado Monitoramento, estatísticas ● Visibilidade ● Confiabilidade ● Escalabilidade 3 de Novembro PHP Conference 2011 19
  • 20. Regra 2: Sem Estado Monitoramento, estatísticas ● Visibilidade Recuperação de falhas simplificada ● Confiabilidade ● Escalabilidade 3 de Novembro PHP Conference 2011 20
  • 21. Regra 2: Sem Estado Monitoramento, estatísticas ● Visibilidade Recuperação de falhas simplificada ● Confiabilidade Cache, balanceamento de carga ● Escalabilidade 3 de Novembro PHP Conference 2011 21
  • 22. Nosso Projeto Imaginário ● Instalação em 10 servidores. ● API, Mobile, Desktop. ● Autenticação via Digest/OAuth. ● Página auxiliar para navegadores. 3 de Novembro PHP Conference 2011 22
  • 23. Regra 3: Cache ● Eficiência ● Performance ● Escalabilidade 3 de Novembro PHP Conference 2011 23
  • 24. Regra 3: Cache Menos requisições ● Eficiência ● Performance ● Escalabilidade 3 de Novembro PHP Conference 2011 24
  • 25. Regra 3: Cache Menos requisições ● Eficiência Menor latência para o cliente ● Performance ● Escalabilidade 3 de Novembro PHP Conference 2011 25
  • 26. Regra 3: Cache Menos requisições ● Eficiência Menor latência para o cliente ● Performance Cache, balanceamento de carga ● Escalabilidade 3 de Novembro PHP Conference 2011 26
  • 27. Ferramentas para Cache ● nginx ● Varnish Cache ● Apache mod_cache ● yslow pra testar 3 de Novembro PHP Conference 2011 27
  • 28. Nosso Projeto Imaginário ● Instalação em 10 servidores. ● API, Mobile, Desktop. ● Autenticação via Digest/OAuth. ● Página auxiliar para navegadores. ● Headers para cache. 3 de Novembro PHP Conference 2011 28
  • 29. Regra 4: Interface Uniforme ● Identificação de Recursos URIs ● Manipulação de Representações HTML, JPG, etc ● Mensagens auto-descritivas text/html, image/jpg ● Hipermídia Links 3 de Novembro PHP Conference 2011 29
  • 30. URI ● Identificação universal de recursos 3 de Novembro PHP Conference 2011 30
  • 31. URI ● Identificação universal de recursos ● Desacoplada da representação 3 de Novembro PHP Conference 2011 31
  • 32. URI ● Identificação universal de recursos ● Desacoplada da representação ● Vários esquemas de identificação ● http://dominio.com/path?query=123#hash ● ftp://user@server.net/path/arquivo.txt ● mailto:alexandre@gaigalas.net ● … 3 de Novembro PHP Conference 2011 32
  • 33. URI ● Identificação universal de recursos ● Desacoplada da representação ● Vários esquemas de identificação ● http://dominio.com/path?query=123#hash ● ftp://user@server.net/path/arquivo.txt ● mailto:alexandre@gaigalas.net ● … ● URIs legais não mudam =D 3 de Novembro PHP Conference 2011 33
  • 35. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path 3 de Novembro PHP Conference 2011 35
  • 36. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path ● Representa um perfil 3 de Novembro PHP Conference 2011 36
  • 37. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path ● Representa um perfil ● Desacoplado do formato de resposta ● Compreende negociação de conteúdo 3 de Novembro PHP Conference 2011 37
  • 38. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path ● Representa um perfil ● Desacoplado do formato de resposta ● Compreende negociação de conteúdo ● Abstrai um recurso ● Aceita GET para obter perfil ● Aceita POST para atualizar perfil 3 de Novembro PHP Conference 2011 38
  • 39. REST em JSON é quase impossível. 3 de Novembro PHP Conference 2011 39
  • 40. Hipermídia Identificação absoluta ● href=”http://example.org/foobar” Identificação relativa ao domínio ● href=”/foobar” Identificação relativa ao esquema ● href=”//example.org/foobar” 3 de Novembro PHP Conference 2011 40
  • 41. Regra 5: Camadas Implementação independente ● Simplicidade Firewalls, segurança, proxies ● Extensibilidade Cache, balanceamento de carga ● Escalabilidade 3 de Novembro PHP Conference 2011 41
  • 42. Nosso Projeto Imaginário ● Instalação em 10 servidores. ● API, Mobile, Desktop. ● Autenticação via Digest/OAuth. ● Página auxiliar para navegadores. ● Headers para cache. ● Hipermídia HTML e XML. 3 de Novembro PHP Conference 2011 42
  • 43. Regra 5: Camadas ● Simplicidade ● Extensibilidade ● Escalabilidade 3 de Novembro PHP Conference 2011 43
  • 44. Regra 5: Camadas Implementação independente ● Simplicidade ● Extensibilidade ● Escalabilidade 3 de Novembro PHP Conference 2011 44
  • 45. Regra 5: Camadas Implementação independente ● Simplicidade Firewalls, segurança, proxies ● Extensibilidade ● Escalabilidade 3 de Novembro PHP Conference 2011 45
  • 46. Nosso Projeto Imaginário ● Instalação em 10 servidores. ● API, Mobile, Desktop. ● Autenticação via Digest/OAuth. ● Página auxiliar para navegadores. ● Proxy-reverso e headers para cache. ● Hipermídia HTML e XML. 3 de Novembro PHP Conference 2011 46
  • 47. Regra Dica 6: Código sob Demanda ● CSS ● Javascript 3 de Novembro PHP Conference 2011 47
  • 48. Regra Dica 6: Código sob Demanda ● CSS Apresentação ● Javascript Comportamento 3 de Novembro PHP Conference 2011 48
  • 49. Regra Dica 6: Código sob Demanda ● CSS Apresentação ● Estilos ● Media queries ● ... ● Javascript Comportamento 3 de Novembro PHP Conference 2011 49
  • 50. Regra Dica 6: Código sob Demanda ● CSS Apresentação ● Estilos ● Media queries ● ... ● Javascript Comportamento ● AJAX ● Feature Detection ● ... 3 de Novembro PHP Conference 2011 50
  • 51. Responsivo é RESTful Desktop Mobile 3 de Novembro PHP Conference 2011 51
  • 52. Ferramentas pra Código sob Demanda ● Modernizr (http://modernizr.com) ● Frameless (http://framelessgrid.com) 3 de Novembro PHP Conference 2011 52
  • 53. Nosso Projeto Imaginário ● Instalação em 10 servidores. ● API, Mobile, Desktop. ● Autenticação via Digest/OAuth. ● Página auxiliar para navegadores. ● Proxy-reverso e headers para cache. ● Hipermídia HTML e XML. ● Versão Mobile/Desktop via Javascript sob demanda 3 de Novembro PHP Conference 2011 53
  • 54. Hoje você viu... ● Conceito: Por quê usar REST? ● Projeto: REST desde o berço ● Implementação: Ferramentas e técnicas 3 de Novembro PHP Conference 2011 54
  • 55. Perguntas? 3 de Novembro PHP Conference 2011 55