Isso não é um post

Na primeira vez que vi “A Traição das Imagens” de Magritte, um quadro com apenas um cachimbo e uma frase, surgiu uma complexa cadeia de pensamentos, contextos culturais, sociais e políticos que  culminaram em um unânime “af, serião?” no meu cérebro seguido de um imenso sentimento de “não acredito que isso é arte”. A expressão em francês escrita na obra significa “Isto não é um cachimbo”, o que torna tudo ainda mais suspeito.


Eu poderia dizer que só entendi o real significado dessa obra quando entendi REST, porque ambos estão intimamente conectados. Seria um ótimo gancho pra começar a falar da tecnologia. Mas na verdade eu já sabia o que a obra significava porque tinha lido na Wikipedia. De qualquer forma, acho justo utilizá-la como exemplo porque pretendo deixar esse texto mais longo e cheio de referências obscuras.

É uma imagem de um cachimbo. Uma representação ilustrada do cachimbo. É sutil, mas muito importante essa separação entre conceitos e suas representações. REST é um estilo de arquitetura de software que define como cliente e servidor podem comunicar-se transferindo apenas representações de recursos.

Quando você acessa o site http://brejas.com.br, por exemplo, para saber um pouco mais sobre as deliciosas cervejas artesanais brasileiras, você não está transferindo as cervejas em si. As cervejas são os recursos sobre os quais você está obtendo informações, mas você está apenas transferindo representações em dados sobre elas.

Nesse ponto, o REST é decepcionante. Seria muito mais interessante poder transferir garrafas completas e geladinhas de cerveja pelo protocolo HTTP. Mas ao mesmo tempo em que eu lamento essa terrível realidade, eu compreendo que ainda não possuímos tecnologia suficiente para levar o estilo arquitetural a um nível tão deliciosamente sofisticado.

Um aspecto interessante dessa experiência tentadora de pesquisar sobre cervejas e outros assuntos na web é que tudo tem um endereço, uma identificação: a URI. Esse é possivelmente o melhor mecanismo de identificação jamais inventado, que pode ser aplicado a qualquer coisa. Cada URI da Wikipedia é um endereço de identificação pra um verbete em uma gigante enciclopédia que descreve muito do que conhecemos do universo. Cada ponto no Google Maps pode ser expresso em uma URI, cada música no last.fm, cada filme no IMDB e por aí vai.

Roy Fielding criou o protocolo HTTP, sua primeira implementação e o estilo arquitetural REST. Ele não era um cara normal. Não demora muito pra compreender sua genialidade ao notar que o trabalho acadêmico que deu origem ao estilo REST fora na verdade um trabalho assinado para o curso de filosofia, e não qualquer área associada a tecnologia da informação. Pense um instante e tente listar pessoas que você conhece que são boas em exatas e humanas, que conseguem compreender e até mesmo criar conceitos que transcendem essas duas áreas. Pois é, eu também não lembro de muitas.

Você identifica e encontra coisas pelas suas URIs, e então transfere representações dessas coisas por uma interface uniforme. Simples e prático, mesmo após algumas cervejas.

Alexandre Gaigalas

Desenvolvedor PHP há tanto tempo que nem lembra direito há quanto tempo é desenvolvedor, o que talvez seja Alzheimer precoce.

Website - Twitter - Facebook - More Posts

  • SHF

    O Roy Fielding fez foi a especificação, não? O protocolo mesmo foi o Tim Bernes-Lee e os outros suiços, ou tô viajando?

    • http://gaigalas.net Alexandre Gaigalas

      Ele fez a especificação e um protótipo, com base nesse protótipo posteriormente ele ajudou a construir o Apache HTTP Server =)

    • Anônimo

      Ele fez a especificação e um protótipo, com base nesse protótipo posteriormente ele ajudou a construir o Apache HTTP Server =)

  • http://twitter.com/caferrari Carlos André Ferrari

    Alguém estava bebendo ao escrever isso

    • http://twitter.com/tonysacanix Tony Kamillo

      Hahahaah certeza.

  • Anônimo

    Ficou muito bom o texto e bem esclarecedor, parabéns!