Com li vaig explicar REST a la meva dona

En realitat, com Ryan Tomayko li va explicar REST la seva dona … Jo només ho vaig traduir.

Esposa: Qui és Roy Fielding?

Ryan: Un tipus. És intel·ligent.

Esposa: ¿De debò? Què va fer?

Ryan: Va ajudar a escriure els primers servidors web, i després va fer un munt d’investigacions, explicant per què la web funciona com funciona. El seu nom apareix en l’especificació del protocol que s’usa per passar pàgines dels servidors al teu navegador.

Esposa: Com funciona?

Ryan: La web?

Esposa: Sí

Ryan: Eh … és tot bastant sorprenent, realment. I lo graciós és que està molt subestimat. El protocol del qual estava parlant, HTTP, és capaç d’una gran pila de coses que la gent ignora per algun motiu.

Esposa: http com el que escric en la direcció en el navegador?

Ryan: Sí. La primera part li diu al navegador quin protocol utilitzar. Això que escrius aquí és un dels descobriments més importants en la història de la computació.

Esposa: Per què?

Ryan: Perquè pot descriure la ubicació d’alguna cosa en qualsevol lloc del món, des de qualsevol lloc del món. És la base de la web. Podries dir que són les coordenades GPS del coneixement i la informació.

Esposa: Per a pàgines web?

Ryan: Per qualsevol cosa, realment. Aquest tipus, Roy Fielding, parla molt sobre a què apunten aquestes coses en la investigació que et vaig dir. La web està armada amb un estil arquitectural anomenat REST. REST proveeix una definició d’un recurs, que és al que apunten aquestes coses.

Esposa: Una pàgina web és un recurs?

Ryan: Gairebé. Una pàgina és una representació d’un recurs. Els recursos són només conceptes. Les URL -això que escriviu al navegador …

Esposa: Sé el que és un URL …

Ryan: Ah, cert. Això li diu al navegador que hi ha un concepte en algun lloc. Un navegador pot, aleshores, demanar una representació específica del concepte. Específicament, un navegador demana la representació de pàgina web d’aquest concepte.

Esposa: Quins altres tipus de representació hi ha?

Ryan: Realment, les representacions són una d’aquelles coses que no s’usen tant. En la majoria dels casos, un recurs té una única representació. Però esperem que les representacions es facin servir més en el futur, perquè hi ha un munt de formats nous apareixent per tot arreu.

Esposa: Per exemple?

Ryan: Mmm … Bé, és aquest concepte que la gent anomena Serveis Web. Significa un munt de coses diferents a un munt de gent diferent, però el concepte bàsic és que les màquines poden fer servir el web com la gent.

Esposa: Això és una altra d’aquestes coses de robots?

Ryan: No, no realment. No vull dir que les màquines es van a seure a l’escriptori i navegar el web, però els ordinadors podrien utilitzar aquests protocols per enviar missatges les unes a les altres. Hem estat fent això per molt de temps, però cap de les tècniques que fem servir avui en dia funcionen bé quan necessites parlar a totes les computadores a tot el món.

Esposa: Per què?

Ryan: Perquè no van ser dissenyats per usar-se així. Quan Fielding i els seus amics van començar a reconstruir la web, poder parlar amb qualsevol màquina en qualsevol lloc del món era molt important. La majoria de les tècniques que fem servir a la feina per fer que les computadores es parlin entre si no tenien aquests requeriments, només necessitaves parlar amb un petit grup d’ordinadors.

Esposa: I ara cal parlar amb totes les màquines?

Ryan: Sí, i més. Necessitem ser capaços de parlar amb totes les màquines sobre totes les coses que estan en totes les altres màquines. Necessitem una forma de fer que una màquina li digui a una altra sobre un recurs que pot estar en una tercera màquina.

Esposa: Què?

Ryan: Imagina’t que estàs parlant amb la teva germana, i ella et demana prestada la teva escombra o alguna cosa, però tú no la tens, la té la teva mare. Llavors li dius a la teva germana que l’hi demani amb ella. Això passa tot el temps en la vida real, i passa tot el temps quan els ordinadors comencen a parlar també.

Esposa: I com es diuen els ordinadors on són les coses?

Ryan: L’URL, és clar. Si tot sobre el que les màquines necessiten parlar té un URL associada, creas l’equivalent per a una màquina d’un substantiu. Que tu i jo i la resta del món ens posem d’acord en parlar sobre substantius d’una certa manera és força important, no?

Esposa: Sí

Ryan: Les màquines no tenen un substantiu universal, per això són un fàstic. Cada llenguatge de programació, base de dades, o un altre tipus de sistemes té una forma diferent de parlar de substantius. Per això la URL és tan important; permet a tots aquests sistemes parlar entre si sobre els seus substantius.

Esposa: Però quan estic navegant, no penso en això.

Ryan: Ningú ho fa. Excepte Fielding i un grapat d’altres persones. Per això les màquines segueixen sent un fàstic.

Esposa: I què de verbs i pronoms i adjectius?

Ryan: Es graciós que preguntis això, perquè aquest és un altre gran aspecte del REST. Bé, almenys els verbs.

Esposa: Era un acudit.

Ryan: Era un acudit graciós, però realment no era un acudit. Els verbs són importants. Hi ha un concepte poderós en programació i la teoria ciència de la computació anomenat polimorfisme. És una forma geek de dir que el mateix verb es pot aplicar a diferents substantius.

Esposa: No entenc.

Ryan: Bé … mira la taula. Quins són els substantius? Tassa, safata, diari, control remot. Ara, què són algunes de les coses que pots fer amb totes aquestes coses?

Esposa: No l’agafo … [NdT: Sóc un capo amb els jocs de paraules (?)]

Ryan: Pots agafar-ho, cert? Pots aixecar, pots tombar, pots cremar. Pots utilitzar aquests verbs exactament en qualsevol dels objectes d’aquí. [N.d.T: Està difícil tombar un diari, però … bé.]

Esposa: Bé … i?

Ryan: Bé, això és important. Què si en comptes de poder demanar-te “va agafar la tassa” i “agafa el diari” i “agafa el control remot” hagués d’utilitzar un verb diferent per a cada substantiu? No podria utilitzar la paraula “agafar” universalment, sinó que hauria de pensar en una nova per a cada combinació de verb i substantiu.

Esposa: Uau! Això és estrany!

Ryan: Sí, ho és. Els nostres cervells són d’alguna manera prou intel ligents com per saber que els mateixos verbs poden aplicar a molts substantius diferents. Per exemple, no puc conduir una tassa ni beure un automòbil, però alguns verbs són gairebé universals, com GET [agafar / demanar], PUT [posar], i DELETE [esborrar].

Esposa: No pots esborrar una tassa …

Ryan: Bé, és clar, però la pots llençar a les escombraries. ¿Aquest era un altre acudit, no?

Esposa: Sip.

Ryan: Llavors, HTTP -aquest protocol que Fielding i els seus amics van crear- és tot sobre aplicar verbs a substantius. Per exemple, quan entres en una pàgina, el navegador fa un HTTP GET a l’URL que escriviu, i el que torna és una pàgina web

Les pàgines web solen tenir imatges, no? Aquests són recursos separats. La pàgina només especifica les URL a les imatges i el navegador fa més HTTP GET -hi fins que tots els recursos s’obtenen i es mostra la pàgina. Però l’important aquí és que substantius molt diferents poden ser tractats de la mateixa manera. Sigui el substantiu una imatge, text, vídeo, un MP3, una presentació de diapositives, o el que sigui, puc obtenir amb GET totes aquestes pàgines de la mateixa manera, donada una URL.

Esposa: Sembla que GET és un verb important.

Ryan: Ho és. Especialment quan utilitzes un navegador, perquè els navegadors més que res només demanen les coses. No fan moltes altres interaccions amb els recursos. Això és un problema, perquè va fer que molta gent assumeixi que HTTP és només per a lectura. Però HTTP és en realitat un protocol de propòsit general per aplicar verbs a substantius.

Esposa: Bonic. Però segueixo sense veure com això canvia res. Quin tipus de substantius i verbs vols?

Ryan: Bé, els substantius hi són, però no en el format apropiat.

Imagina’t quan estaves navegant en amazon.com cercant coses per comprar per Nadal. Imagina’t que cada producte és un substantiu. Ara, si estiguessin disponibles en una representació que una màquina pugui entendre, podries fer un munt de coses interessants.

Esposa: Per què una màquina no entén una pàgina web normal?

Ryan: Perquè les pàgines web estan dissenyades per a ser compreses per la gent. A una màquina no li importa la disposició i l’estil del contingut. Les màquines bàsicament només necessiten les dades. Idealment, totes les URL haurien de tenir una representació llegible per humans, i una altra per a màquines. Quan un navegador fa GET per demanar un recurs per a un humà, demanarà la llegible per humans.

Esposa: Llavors. Tothom hauria de fer formats màquina de totes les seves pàgines?

Ryan: Si fos avaluable.

Mira, vam estar parlant d’això amb un munt d’abstracció. Què tal si prenem un exemple real? Ets una mestra. En una escola, m’imagino que tindràs un gran sistema informàtic, o tres o quatre sistemes, més segurament, que et deixen utilitzar als teus estudiants: en què classes estan, quines notes tenen, contactes d’emergència, informació sobre els llibres que fas servir a l’aula, etc. Si els sistemes estan basats en web, probablement hi ha una URL per a cada un dels substantius involucrats: alumne, mestre, classe, llibre, aula, etc. Ara mateix, demanar l’URL amb un navegador et torna una pàgina web. Si hi hagués una representació llegible per la màquina per a cada URL seria trivial afegir noves eines al sistema, perquè tota aquesta informació seria consumible de forma estàndard. També faria bastant més fàcil que cada sistema es parli entre si. O, podries construir un sistema estatal o nacional que pugui parlar amb cada un dels sistemes escolars per obtenir les qualificacions de les proves. Les possibilitats són il·limitades.

Cada sistema obtindria informació dels altres usant un simple HTTP GET. Si un sistema necessités afegir alguna cosa a un altre, faria servir HTTP POST. Si voleu actualitzar alguna cosa, faria servir HTTP PUT. L’únic que cal esbrinar és quina forma tenen les dades.

Esposa: Llavors en això és el que tu i tota la gent d’ordinadors esteu treballant? ¿Decidir la forma que les dades haurien de tenir?

Ryan: Malauradament, no. Per contra, la majoria està treballant escrivint capes d’especificacions complexes per fer coses d’una manera diferent que no és ni remotament tan útil o eloqüent. Els substantius no són universals ni els verbs polimòrfics. Estem tirant a les escombraries dècades de coses que de veritat es fan servir i tècniques demostrades, i començant de nou amb una cosa que s’assembla molt a altres sistemes que van fallar en el passat. Fem servir HTTP, però només perquè ens ajuda a parlar menys amb els encarregats de xarxes i seguretat. Canviem simplicitat per eines cridaneres i dissenyadors automàtics.

Esposa: Per què?

Ryan: No tinc idea.

Esposa: Per què no díus alguna cosa?

Ryan: Potser ho faci.

Cómo le expliqué REST a mi esposa

Anuncis

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out / Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out / Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out / Canvia )

Google+ photo

Esteu comentant fent servir el compte Google+. Log Out / Canvia )

Connecting to %s

%d bloggers like this: