SlideShare a Scribd company logo
1 of 56
Download to read offline
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

More Related Content

Viewers also liked

Arquiteturas Cloud: Uma Introdução
Arquiteturas Cloud: Uma IntroduçãoArquiteturas Cloud: Uma Introdução
Arquiteturas Cloud: Uma IntroduçãoJose Papo, MSc
 
Sucesso profissional #dnad12
Sucesso profissional #dnad12Sucesso profissional #dnad12
Sucesso profissional #dnad12Luís Caramurú
 
O mix sl_apr-oramix_abr2013 vglobal
O mix sl_apr-oramix_abr2013 vglobalO mix sl_apr-oramix_abr2013 vglobal
O mix sl_apr-oramix_abr2013 vglobalLuis Lobo e Silva
 
Dell PowerEdge R920 and Microsoft SQL Server 2014 Migration and Benefits Guide
Dell PowerEdge R920 and Microsoft SQL Server 2014 Migration and Benefits GuideDell PowerEdge R920 and Microsoft SQL Server 2014 Migration and Benefits Guide
Dell PowerEdge R920 and Microsoft SQL Server 2014 Migration and Benefits GuidePrincipled Technologies
 
Difference between standlone hyper-v vs role based
Difference between standlone hyper-v vs role basedDifference between standlone hyper-v vs role based
Difference between standlone hyper-v vs role basedAshwin Pawar
 
Domine Validação de Dados em 45min
Domine Validação de Dados em 45minDomine Validação de Dados em 45min
Domine Validação de Dados em 45minAlexandre Gaigalas
 
O Perfil do Profissional de Sucesso - ebook
O Perfil do Profissional de Sucesso - ebookO Perfil do Profissional de Sucesso - ebook
O Perfil do Profissional de Sucesso - ebookAnderson Hernandes
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingDaniel Checchia
 
Conhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWSConhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWSAmazon Web Services LATAM
 
Mercado de trabalho e Empregabilidade
Mercado de trabalho e EmpregabilidadeMercado de trabalho e Empregabilidade
Mercado de trabalho e EmpregabilidadeJoedes Ribeiro
 
Estratégia vencer em meio a crise
Estratégia vencer em meio a criseEstratégia vencer em meio a crise
Estratégia vencer em meio a criseCarlos Rocha
 
Habilidades do administrador slides
Habilidades do administrador   slidesHabilidades do administrador   slides
Habilidades do administrador slidesVanessa
 

Viewers also liked (20)

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

Similar to REST: Faça o Serviço Direito

REST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaREST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaAlexandre Gaigalas
 
Desenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDesenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDomingos Teruel
 
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Gabriel Machado
 
Técnicas para ser escalável com PHP
Técnicas para ser escalável com PHPTécnicas para ser escalável com PHP
Técnicas para ser escalável com PHPFilipe La Ruina
 
PHP e componentes reutilizáveis
PHP e componentes reutilizáveisPHP e componentes reutilizáveis
PHP e componentes reutilizáveiselliando dias
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPLorranna Machado
 
Code Igniter & Zend Framework - Uma união de sucesso
Code Igniter & Zend Framework - Uma união de sucessoCode Igniter & Zend Framework - Uma união de sucesso
Code Igniter & Zend Framework - Uma união de sucessoJose Wilker
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
Frameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPFrameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPElton Minetto
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...BrunoSouza617
 
Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Adler Medrado
 
Code Igniter & Zend Framework Uma UniãO De Sucesso
Code Igniter & Zend Framework   Uma UniãO De SucessoCode Igniter & Zend Framework   Uma UniãO De Sucesso
Code Igniter & Zend Framework Uma UniãO De SucessoJose Wilker
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
APIs REST com Apigility
APIs REST com ApigilityAPIs REST com Apigility
APIs REST com ApigilityFelipe Weckx
 

Similar to REST: Faça o Serviço Direito (20)

REST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaREST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC Goiânia
 
Desenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDesenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend Framework
 
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
 
WP Composer
WP ComposerWP Composer
WP Composer
 
PHP 5.3 - Introdução
PHP 5.3 - IntroduçãoPHP 5.3 - Introdução
PHP 5.3 - Introdução
 
Manual PHP
Manual PHPManual PHP
Manual PHP
 
Técnicas para ser escalável com PHP
Técnicas para ser escalável com PHPTécnicas para ser escalável com PHP
Técnicas para ser escalável com PHP
 
PHP e componentes reutilizáveis
PHP e componentes reutilizáveisPHP e componentes reutilizáveis
PHP e componentes reutilizáveis
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
 
Django
DjangoDjango
Django
 
Php
PhpPhp
Php
 
Code Igniter & Zend Framework - Uma união de sucesso
Code Igniter & Zend Framework - Uma união de sucessoCode Igniter & Zend Framework - Uma união de sucesso
Code Igniter & Zend Framework - Uma união de sucesso
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Frameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPFrameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHP
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
 
Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014
 
Code Igniter & Zend Framework Uma UniãO De Sucesso
Code Igniter & Zend Framework   Uma UniãO De SucessoCode Igniter & Zend Framework   Uma UniãO De Sucesso
Code Igniter & Zend Framework Uma UniãO De Sucesso
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
APIs REST com Apigility
APIs REST com ApigilityAPIs REST com Apigility
APIs REST com Apigility
 

More from Alexandre Gaigalas

Mágica com Manipulação de Imagens - TDC 2011 Goiânia
Mágica com Manipulação de Imagens - TDC 2011 GoiâniaMágica com Manipulação de Imagens - TDC 2011 Goiânia
Mágica com Manipulação de Imagens - TDC 2011 GoiâniaAlexandre Gaigalas
 
assertTrue($tdd) - Latinoware 2011
assertTrue($tdd) - Latinoware 2011assertTrue($tdd) - Latinoware 2011
assertTrue($tdd) - Latinoware 2011Alexandre Gaigalas
 
REST: Faça o Serviço Direito
REST: Faça o Serviço DireitoREST: Faça o Serviço Direito
REST: Faça o Serviço DireitoAlexandre Gaigalas
 
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011Alexandre Gaigalas
 
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12Alexandre Gaigalas
 

More from Alexandre Gaigalas (7)

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