Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Como expliquei REST pra minha namorada

Como expliquei REST pra minha namorada

Introduction to REST

Jefferson Venerando

June 19, 2012
Tweet

More Decks by Jefferson Venerando

Other Decks in Programming

Transcript

  1. 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.
  2. 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.
  3. Para páginas web? Para qualquer coisa. A web é construída

    sobre um estilo arquitetural chamado: REST
  4. REST Representational State Transfer REST tem uma definição de “recurso”,

    que é o que o HTTP referencia. Página web é um recurso?
  5. 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.
  6. 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?
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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?
  12. 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.
  13. 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.
  14. Polimorfismo •Jeito nerd de dizer que o mesmo verbo pode

    ser aplicado a diferentes substantivos.
  15. 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á.
  16. 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.
  17. 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).
  18. 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.
  19. 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.
  20. 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?
  21. 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.
  22. 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.
  23. 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.
  24. HTTP GET pra recuperar informação dos outros. Adicionaria usando um

    HTTP POST. Se precisar atualizar algo, HTTP PUT.
  25. 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).
  26. 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