REST: Faça o Serviço Direito - TDC Goiânia

Preview:

Citation preview

30 de Outubro The Developers Conference 2011 1

REST: Faça o Serviço Direito

30 de Outubro The Developers Conference 2011 2

REST: Faça o Serviço Direitobeta

30 de Outubro The Developers Conference 2011 3

Alexandre Gomes Gaigalas

http://about.me/alganet

30 de Outubro The Developers Conference 2011 4

Hoje você vai ver...

● Conceito: Por quê usar REST?

● Projeto: REST desde o berço

● Implementação: Ferramentas e técnicas

30 de Outubro The Developers Conference 2011 5

REST não é apenas para APIs.

30 de Outubro The Developers Conference 2011 6

30 de Outubro The Developers Conference 2011 7

Roy Fielding

30 de Outubro The Developers Conference 2011 8

Arquitetura

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

30 de Outubro The Developers Conference 2011 9

Arquitetura

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

Dados, componentes e conectores

30 de Outubro The Developers Conference 2011 10

Arquitetura

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

Performance, escalabilidade, simplicidade, extensibilidade

Dados, componentes e conectores

30 de Outubro The Developers Conference 2011 11

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

30 de Outubro The Developers Conference 2011 12

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

30 de Outubro The Developers Conference 2011 13

Regra 1: Cliente-Servidor

● Portabilidade

● Escalabilidade

30 de Outubro The Developers Conference 2011 14

Regra 1: Cliente-Servidor

● Portabilidade

● Escalabilidade

Desktop, Mobile, API, etc.

30 de Outubro The Developers Conference 2011 15

Regra 1: Cliente-Servidor

● Portabilidade

● Escalabilidade

Múltiplos servidores e clientes

Desktop, Mobile, API, etc.

30 de Outubro The Developers Conference 2011 16

Regra 1: Cliente-Servidor

● Portabilidade

● Escalabilidade

http://futurefriend.ly

Múltiplos servidores e clientes

Desktop, Mobile, API, etc.

30 de Outubro The Developers Conference 2011 17

Ferramentas Cliente-Servidor

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

30 de Outubro The Developers Conference 2011 18

Nosso Projeto

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

30 de Outubro The Developers Conference 2011 19

Regra 2: Sem Estado

30 de Outubro The Developers Conference 2011 20

Regra 2: Sem Estado

● Visibilidade

● Confiabilidade

● Escalabilidade

30 de Outubro The Developers Conference 2011 21

Regra 2: Sem Estado

● Visibilidade

● Confiabilidade

● Escalabilidade

Monitoramento, estatísticas

30 de Outubro The Developers Conference 2011 22

Regra 2: Sem Estado

● Visibilidade

● Confiabilidade

● Escalabilidade

Recuperação de falhas simplificada

Monitoramento, estatísticas

30 de Outubro The Developers Conference 2011 23

Regra 2: Sem Estado

● Visibilidade

● Confiabilidade

● Escalabilidade

Recuperação de falhas simplificada

Monitoramento, estatísticas

Cache, balanceamento de carga

30 de Outubro The Developers Conference 2011 24

Nosso Projeto

● Instalação em 10 servidores.● API, Mobile, Desktop.● Autenticação via Digest/OAuth.

● Página auxiliar para navegadores.

30 de Outubro The Developers Conference 2011 25

Regra 3: Cache

● Eficiência

● Performance

● Escalabilidade

30 de Outubro The Developers Conference 2011 26

Regra 3: Cache

● Eficiência

● Performance

● Escalabilidade

Menos requisições

30 de Outubro The Developers Conference 2011 27

Regra 3: Cache

● Eficiência

● Performance

● Escalabilidade

Menor latência para o cliente

Menos requisições

30 de Outubro The Developers Conference 2011 28

Regra 3: Cache

● Eficiência

● Performance

● Escalabilidade

Menor latência para o cliente

Menos requisições

Cache, balanceamento de carga

30 de Outubro The Developers Conference 2011 29

Ferramentas para Cache

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

30 de Outubro The Developers Conference 2011 30

Nosso Projeto

● Instalação em 10 servidores.● API, Mobile, Desktop.● Autenticação via Digest/OAuth.

● Página auxiliar para navegadores.● Headers para cache.

30 de Outubro The Developers Conference 2011 31

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

21 de Agosto The Developers Conference 2011 32

URI

● Identificação universal de recursos

21 de Agosto The Developers Conference 2011 33

URI

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

21 de Agosto The Developers Conference 2011 34

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

21 de Agosto The Developers Conference 2011 35

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

21 de Agosto The Developers Conference 2011 36

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

21 de Agosto The Developers Conference 2011 37

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

Schema Domain Path

21 de Agosto The Developers Conference 2011 38

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

Schema Domain Path

● Representa um perfil

21 de Agosto The Developers Conference 2011 39

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

21 de Agosto The Developers Conference 2011 40

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

30 de Outubro The Developers Conference 2011 41

REST em JSON é quase impossível.

30 de Outubro The Developers Conference 2011 42

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

30 de Outubro The Developers Conference 2011 43

Nosso Projeto

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

30 de Outubro The Developers Conference 2011 44

Regra 5: Camadas

● Simplicidade

● Extensibilidade

● Escalabilidade

30 de Outubro The Developers Conference 2011 45

Regra 5: Camadas

● Simplicidade

● Extensibilidade

● Escalabilidade

Implementação independente

30 de Outubro The Developers Conference 2011 46

Regra 5: Camadas

● Simplicidade

● Extensibilidade

● Escalabilidade

Firewalls, segurança, proxies

Implementação independente

30 de Outubro The Developers Conference 2011 47

Regra 5: Camadas

● Simplicidade

● Extensibilidade

● Escalabilidade

Firewalls, segurança, proxies

Implementação independente

Cache, balanceamento de carga

30 de Outubro The Developers Conference 2011 48

Nosso Projeto

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

30 de Outubro The Developers Conference 2011 49

Regra Dica 6: Código sob Demanda

● CSS

● Javascript

30 de Outubro The Developers Conference 2011 50

Regra Dica 6: Código sob Demanda

● CSS

● JavascriptComportamento

Apresentação

30 de Outubro The Developers Conference 2011 51

Regra Dica 6: Código sob Demanda

● CSS● Estilos● Media queries● ...

● JavascriptComportamento

Apresentação

30 de Outubro The Developers Conference 2011 52

Regra Dica 6: Código sob Demanda

● CSS● Estilos● Media queries● ...

● Javascript● AJAX● Feature Detection● ...

Comportamento

Apresentação

30 de Outubro The Developers Conference 2011 53

Ferramentas pra Código sob Demanda

● Modernizr (http://modernizr.com)

● Frameless (http://framelessgrid.com)

30 de Outubro The Developers Conference 2011 54

Nosso Projeto

● 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

30 de Outubro The Developers Conference 2011 55

Hoje você viu...

● Conceito: Por quê usar REST?

● Projeto: REST desde o berço

● Implementação: Ferramentas e técnicas

30 de Outubro The Developers Conference 2011 56

Perguntas?

30 de Outubro The Developers Conference 2011 57

Obrigado!