Slide 1

Slide 1 text

Como eu expliquei REST pra minha namorada Ryan Tomayko

Slide 2

Slide 2 text

Quem é “Roy Fielding”?

Slide 3

Slide 3 text

Quem é “Roy Fielding”? É um cara. Bem esperto. •Ajudou a escrever os primeiros servidores web; •Fez pesquisas explicando porque a web funciona como ela funciona; •O nome dele está na especificação do protocolo usado para transferir páginas dos servidores para os navegadores.

Slide 4

Slide 4 text

Como a web funciona HTTP •Informa ao navegador qual protocolo utilizar; •Uma das mais importantes descobertas da história da computação; •Descreve a localização de algo em qualquer lugar do mundo para qualquer lugar do mundo; •GPS para informações e conhecimento.

Slide 5

Slide 5 text

Para páginas web? Para qualquer coisa. A web é construída sobre um estilo arquitetural chamado: REST

Slide 6

Slide 6 text

REST Representational State Transfer REST tem uma definição de “recurso”, que é o que o HTTP referencia. Página web é um recurso?

Slide 7

Slide 7 text

Página web é um recurso? •Uma página web é uma “representação” de um recurso. Recursos são apenas conceitos; •A URL diz ao navegador que existe um conceito em algum lugar; •O navegador requisita uma representação específica daquele conceito.

Slide 8

Slide 8 text

Existem outros tipos de representação? •Representações não são muito usadas =( •A maioria dos recursos têm apenas uma representação; •Esperamos que representações sejam mais usadas no futuro, já que um monte de novos formatos estão surgindo. Como quais?

Slide 9

Slide 9 text

Como quais? “Web Service” •Significa um monte de coisa diferente pra um monte de gente diferente; •As máquinas podem usar a web da mesma maneira que as pessoas.

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Isso é coisa de robô? Computadores podem usar os mesmos protocolos para enviar mensagens uns para os outros. •Nós fazemos isso há bastante tempo; •Nenhuma técnica que usamos hoje funciona bem quando é necessário falar com todas as máquinas de todo o mundo.

Slide 12

Slide 12 text

Por que não? •Na época de Fielding, falar com qualquer máquina em qualquer lugar era de suma importância; •A maioria das técnicas que usamos não tem esses requisitos; •Precisam falar apenas com pequenos grupos de máquinas.

Slide 13

Slide 13 text

E agora? •Precisamos falar com todas máquinas sobre todas as coisas que estão em todas as máquinas; •Precisamos de um modo de uma máquina contar para a outra sobre um recurso que pode estar em uma terceira máquina.

Slide 14

Slide 14 text

O que?

Slide 15

Slide 15 text

O que? •Sua irmã quer o esfregão emprestado; •Você não tem. Mas sua mãe tem; •Você diz pra sua irmã para pegar da sua mãe. Como as máquinas conversam?

Slide 16

Slide 16 text

Como as máquinas conversam? URL •Se tudo o que a máquina precisa falar tiver uma URL correspondente, temos o equivalente a um substantivo para as máquinas; •Quando usarmos os mesmos substantivos, teremos algo bem importante.

Slide 17

Slide 17 text

Substantivos? •Máquinas não tem um substantivo universal; •Toda linguagem de programação, DB etc., tem um jeito diferente de falar sobre substantivos. Isso faz a URL importante. •Ela permite que todos sistemas contem uns para os outros sobre seus substantivos.

Slide 18

Slide 18 text

Aham, Cláudia. Senta lá.

Slide 19

Slide 19 text

Mas e os verbos, pronomes e adjetivos? Verbos são outro grande especto do REST.

Slide 20

Slide 20 text

Polimorfismo •Jeito nerd de dizer que o mesmo verbo pode ser aplicado a diferentes substantivos.

Slide 21

Slide 21 text

Ahm?

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

O que podemos fazer com todas essas coisas?

Slide 24

Slide 24 text

O que podemos fazer com todas essas coisas? •Recuperá-las; •Pegá-las; •Batê-las; •Queimá-las; Aplicamos os mesmos verbos pra qualquer objeto que esteja lá.

Slide 25

Slide 25 text

Mas e se eu não pudesse falar... •Pegue a jarra; •Pegue o prato; •Pegue o garfo. Não poderia usar a palavra “pegue” universalmente. Nova palavra para cada combinação de verbo/substantivo.

Slide 26

Slide 26 text

Ei, isso seria estranho.

Slide 27

Slide 27 text

Somos inteligentes. •Verbos podem ser aplicados a diferentes substantivos; •Alguns são mais específicos; •Não posso dirigir uma jarra ou beber um garfo; •Outros são quase sempre universais, como recuperar (GET), colocar (PUT) e apagar (DELETE).

Slide 28

Slide 28 text

HTTP é sobre... APLICAR VERBOS A SUBSTANTIVOS. •Quando você acessa uma página, o navegador faz uma requisição HTTP GET na URL que você digitou e devolve uma página web.

Slide 29

Slide 29 text

Parece que GET é importante.

Slide 30

Slide 30 text

Parece que GET é importante. •Navegadores, basicamente, só usam GET para recuperar as coisas; •Não fazem outros tipos de interação com recursos; •Nos faz achar que HTTP é apenas recuperar recursos.

Slide 31

Slide 31 text

HTTP é um protocolo com propósito de aplicar verbos em substantivos. Ok, mas como isso muda alguma coisa? Que tipos de substantivos e verbos nós precisamos?

Slide 32

Slide 32 text

Por que uma máquina não pode entender uma página web? •Páginas web são planejadas pra serem entendidas por pessoas; •Máquina não se importam com layout e estilo, precisam somente de dados; •Cada URL poderia ter uma representação para humanos e para máquinas.

Slide 33

Slide 33 text

Então precisamos fazer formatos de máquina para todas as páginas? Sim, se as páginas tiverem valor.

Slide 34

Slide 34 text

Exemplo real •Sistema para gerenciar alunos; •Em quais matérias estão matriculados, notas, contatos de emergência, livros usados, etc. Existe uma URL para cada substantivo: aluno, professor, aula, livro, sala, etc. Após uma requisição temos uma página web.

Slide 35

Slide 35 text

Se existir uma representação legível ao computador para cada URL, seria trivial criar novas ferramentas para o sistema, pois toda informação seria absorvida de um jeito padrão.

Slide 36

Slide 36 text

HTTP GET pra recuperar informação dos outros. Adicionaria usando um HTTP POST. Se precisar atualizar algo, HTTP PUT.

Slide 37

Slide 37 text

Falta descobrir como esses dados devem ser.

Slide 38

Slide 38 text

Escrevemos camadas de especificações complexas para fazer as coisas de um jeito diferente. Trocamos a simplicidade por ferramentas e assistentes chamativos (next, next, finish).

Slide 39

Slide 39 text

Por que?

Slide 40

Slide 40 text

Por que? Não faço a mínima idéia.

Slide 41

Slide 41 text

Jefferson Q. Venerando 6º semestre Sistemas de Informação - Fundação Educacional de Fernandópolis [email protected] http://shamanime.com @shamanime Bras Sun Research Facility http://bsrf.shamanime.com