rest: faça o serviço direito

Post on 06-Jul-2015

2.777 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Acompanhe o projeto, modelagem, conceitos e ferramentas para o desenvolvimento de um sistema RESTful completo.

TRANSCRIPT

3 de Novembro PHP Conference 2011 1

REST: Faça o Serviço Direito

3 de Novembro PHP Conference 2011 2

Alexandre Gomes Gaigalas

http://about.me/alganet

3 de Novembro PHP Conference 2011 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 4

REST não é apenas para APIs.

3 de Novembro PHP Conference 2011 5

3 de Novembro PHP Conference 2011 6

Roy Fielding

3 de Novembro PHP Conference 2011 7

Arquitetura

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

3 de Novembro PHP Conference 2011 8

Arquitetura

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

Dados, componentes e conectores

3 de Novembro PHP Conference 2011 9

Arquitetura

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

Performance, escalabilidade, simplicidade, extensibilidade

Dados, componentes e conectores

3 de Novembro PHP Conference 2011 10

Arquitetura

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

Dados, componentes e conectores

Estilo ArquiteturalComo você alcança certos objetivos com

determinadas regras de organização dos elementos de software.

Performance, escalabilidade, simplicidade, extensibilidade

3 de Novembro PHP Conference 2011 11

Arquitetura

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

REST

Dados, componentes e conectores

Estilo ArquiteturalComo você alcança certos objetivos com

determinadas regras de organização dos elementos de software.

Performance, escalabilidade, simplicidade, extensibilidade

3 de Novembro PHP Conference 2011 12

Regra 1: Cliente-Servidor

● Portabilidade

● Escalabilidade

3 de Novembro PHP Conference 2011 13

Regra 1: Cliente-Servidor

● Portabilidade

● Escalabilidade

Desktop, Mobile, API, etc.

3 de Novembro PHP Conference 2011 14

Regra 1: Cliente-Servidor

● Portabilidade

● Escalabilidade

Múltiplos servidores e clientes

Desktop, Mobile, API, etc.

3 de Novembro PHP Conference 2011 15

Regra 1: Cliente-Servidor

● Portabilidade

● Escalabilidade

http://futurefriend.ly

Múltiplos servidores e clientes

Desktop, Mobile, API, etc.

3 de Novembro PHP Conference 2011 16

Ferramentas Cliente-Servidor

● Apache HTTP Server● nginx ● curl ● Zend_Http_Client● github.com/educoder/pest● ...

3 de Novembro PHP Conference 2011 17

Nosso Projeto Imaginário

● Instalação em 10 servidores.● API, Mobile, Desktop.

3 de Novembro PHP Conference 2011 18

Regra 2: Sem Estado

● Visibilidade

● Confiabilidade

● Escalabilidade

3 de Novembro PHP Conference 2011 19

Regra 2: Sem Estado

● Visibilidade

● Confiabilidade

● Escalabilidade

Monitoramento, estatísticas

3 de Novembro PHP Conference 2011 20

Regra 2: Sem Estado

● Visibilidade

● Confiabilidade

● Escalabilidade

Recuperação de falhas simplificada

Monitoramento, estatísticas

3 de Novembro PHP Conference 2011 21

Regra 2: Sem Estado

● Visibilidade

● Confiabilidade

● Escalabilidade

Recuperação de falhas simplificada

Monitoramento, estatísticas

Cache, balanceamento de carga

3 de Novembro PHP Conference 2011 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 23

Regra 3: Cache

● Eficiência

● Performance

● Escalabilidade

3 de Novembro PHP Conference 2011 24

Regra 3: Cache

● Eficiência

● Performance

● Escalabilidade

Menos requisições

3 de Novembro PHP Conference 2011 25

Regra 3: Cache

● Eficiência

● Performance

● Escalabilidade

Menor latência para o cliente

Menos requisições

3 de Novembro PHP Conference 2011 26

Regra 3: Cache

● Eficiência

● Performance

● Escalabilidade

Menor latência para o cliente

Menos requisições

Cache, balanceamento de carga

3 de Novembro PHP Conference 2011 27

Ferramentas para Cache

● nginx ● Varnish Cache● Apache mod_cache● yslow pra testar

3 de Novembro PHP Conference 2011 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 29

Regra 4: Interface Uniforme

● Identificação de Recursos

● Manipulação de Representações

● Mensagens auto-descritivas

● Hipermídia

URIs

HTML, JPG, etc

text/html, image/jpg

Links

3 de Novembro PHP Conference 2011 30

URI

● Identificação universal de recursos

3 de Novembro PHP Conference 2011 31

URI

● Identificação universal de recursos● Desacoplada da representação

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 ● …

3 de Novembro PHP Conference 2011 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 34

http://social.yahooapis.com/v1/user/12345/profile

3 de Novembro PHP Conference 2011 35

http://social.yahooapis.com/v1/user/12345/profile

Schema Domain Path

3 de Novembro PHP Conference 2011 36

http://social.yahooapis.com/v1/user/12345/profile

Schema Domain Path

● Representa um perfil

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

3 de Novembro PHP Conference 2011 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 39

REST em JSON é quase impossível.

3 de Novembro PHP Conference 2011 40

Hipermídia

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

● href=”/foobar”

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

Identificação absoluta

Identificação relativa ao domínio

Identificação relativa ao esquema

3 de Novembro PHP Conference 2011 41

Regra 5: Camadas

● Simplicidade

● Extensibilidade

● Escalabilidade

Firewalls, segurança, proxies

Implementação independente

Cache, balanceamento de carga

3 de Novembro PHP Conference 2011 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 43

Regra 5: Camadas

● Simplicidade

● Extensibilidade

● Escalabilidade

3 de Novembro PHP Conference 2011 44

Regra 5: Camadas

● Simplicidade

● Extensibilidade

● Escalabilidade

Implementação independente

3 de Novembro PHP Conference 2011 45

Regra 5: Camadas

● Simplicidade

● Extensibilidade

● Escalabilidade

Firewalls, segurança, proxies

Implementação independente

3 de Novembro PHP Conference 2011 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 47

Regra Dica 6: Código sob Demanda

● CSS

● Javascript

3 de Novembro PHP Conference 2011 48

Regra Dica 6: Código sob Demanda

● CSS

● JavascriptComportamento

Apresentação

3 de Novembro PHP Conference 2011 49

Regra Dica 6: Código sob Demanda

● CSS● Estilos● Media queries● ...

● JavascriptComportamento

Apresentação

3 de Novembro PHP Conference 2011 50

Regra Dica 6: Código sob Demanda

● CSS● Estilos● Media queries● ...

● Javascript● AJAX● Feature Detection● ...

Comportamento

Apresentação

3 de Novembro PHP Conference 2011 51

Desktop

Mobile

Responsivo é RESTful

3 de Novembro PHP Conference 2011 52

Ferramentas pra Código sob Demanda

● Modernizr (http://modernizr.com)

● Frameless (http://framelessgrid.com)

3 de Novembro PHP Conference 2011 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 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 55

Perguntas?

3 de Novembro PHP Conference 2011 56

Obrigado!http://joind.in/4473

top related