Sie sind auf Seite 1von 7

Como le expliqué REST a mi esposa

Sábado 22 de Marzo de 2008

En realidad, cómo Ryan Tomayko le explicó REST a su esposa… Yo solo lo traduje.

Esposa: ¿Quién es Roy Fielding?

Ryan: Un tipo. Es inteligente.

Esposa: ¿En serio? ¿Qué hizo?

Ryan: Ayudó a escribir los primeros servidores web, y después hizo un montón de investigaciones, explicando por
qué la web funciona como funciona. Su nombre aparece en la especificación del protocolo que se usa para pasar
páginas de los servidores a tu navegador.

Esposa: ¿Cómo funciona?

Ryan: ¿La web?

Esposa: Sí.

Ryan: Eh… es todo bastante sorprendente, realmente. Y lo gracioso es que está muy subestimado. El protocolo del
que estaba hablando, HTTP, es capaz de un montónazo de cosas que la gente ignora por algún motivo.

Esposa: ¿http como lo que escribo en la dirección en el navegador?

Ryan: Sí. La primera parte le dice al navegador qué protocolo usar. Eso que escribís ahí es uno de los
descubrimientos más importantes en la historia de la computación.

Esposa: ¿Por qué?

Ryan: Porque puede describir la ubicación de algo en cualquier lugar del mundo, desde cualquier lugar del mundo. Es
la base de la web. Podrías decir que son las coordenadas GPS del conocimiento y la información.

Esposa: ¿Para páginas web?

Ryan: Para cualquier cosa, realmente. Ese tipo, Roy Fielding, habla mucho acerca de a qué apuntan esas cosas en la
investigación que te dije. La web está armada en un estilo arquitectural llamado REST. REST provee una definición
de un recurso, que es a lo que apuntan esas cosas.

Esposa: ¿Una página web es un recurso?

Ryan: Casi. Una página es una representación de un recurso. Los recursos son solo conceptos. Las URLs—eso que
escribís en el navegador…

Esposa: Sé lo que es una URL…

Ryan: Ah, cierto. Eso le dice al navegador que hay un concepto en algún lado. Un navegador puede, entonces, pedir
una representación específica del concepto. Específicamente, un navegador pide la representación de página web de
ese concepto.

Esposa: ¿Qué otros tipos de representación hay?

Ryan: Realmente, las representaciones son una de esas cosas que no se usan tanto. En la mayoría de los casos, un
1 de 7
recurso tiene una única representación. Pero esperamos que las representaciones se usen más en el futuro, porque hay
un montón de formatos nuevos apareciendo por todos lados.

Esposa: ¿Por ejemplo?

Ryan: Mmm… Bueno, está este concepto que la gente llama Servicios Web. Significa un montón de cosas diferentes
a un montón de gente diferente, pero el concepto básico es que las máquinas pueden usar la web igual que la gente.

Esposa: ¿Esto es otra de esas cosas de robots?

Ryan: No, no realmente. No quiero decir que las máquinas se van a sentar en el escritorio y navegar la web, pero las
computadoras podrían usar esos protocolos para mandarse mensajes las unas a las otras. Hemos estado haciendo eso
por mucho tiempo, pero ninguna de las técnicas que usamos hoy en día funcionan bien cuando necesitas hablar a
todas las computadoras en todo el mundo.

Esposa: ¿Por qué?

Ryan: Porque no fueron diseñados para usarse así. Cuando Fielding y sus amigos empezaron a armar la web, poder
hablar con cualquier máquina en cualquier lugar del mundo era de suma importancia. La mayoría de las técnicas que
usamos en el trabajo para hacer que las computadoras se hablen entre sí no tenían esos requerimientos; sólo
necesitabas hablar con un pequeño grupo de computadoras.

Esposa: ¿Y ahora necesitas hablar con todas las máquinas?

Ryan: Sí, y más. Necesitamos ser capaces de hablar con todas las máquinas acerca de todas las cosas que están en
todas las otras máquinas. Necesitamos una forma de hacer que una máquina le diga a otra acerca de un recurso que
puede estar en una tercera máquina.

Esposa: ¿Qué?

Ryan: Imaginate que estás hablando con tu hermana, y ella te pide prestada tu escoba o algo, pero vos no la tenés, la
tiene tu mamá. Entonces le decís a tu hermana que se la pida a ella. Esto pasa todo el tiempo en la vida real, y pasa
todo el tiempo cuando las computadoras empiezan a hablar también.

Esposa: ¿Y cómo se dicen las computadoras dónde están las cosas?

Ryan: La URL, claro. Si todo sobre lo que las máquinas necesitan hablar tiene una URL asociada, creaste el
equivalente para una máquina de un sustantivo. Que vos y yo y el resto del mundo nos pongamos de acuerdo en
hablar sobre sustantivos de una cierta manera es bastante importante, ¿no?

Esposa: Sí.

Ryan: Las máquinas no tienen un sustantivo universal; por eso son un asco. Cada lenguaje de programación, base de
datos, u otro tipo de sistemas tiene una forma distinta de hablar de sustantivos. Por eso la URL es tan importante;
permite a todos estos sistemas hablar entre sí acerca de sus sustantivos.

Esposa: Pero cuando estoy navegando, no pienso en eso.

Ryan: Nadie lo hace. Excepto Fielding y un puñado de otras personas. Por eso las máquinas siguen siendo un asco.

Esposa: ¿Y qué de verbos y pronombres y adjetivos?

Ryan: Gracioso que preguntes, porque ese es otro gran aspecto del REST. Bueno, al menos los verbos.

Esposa: Era un chiste.

Ryan: Era un chiste gracioso, pero realmente no era un chiste. Los verbos son importantes. Hay un concepto
2 de 7
poderoso en programación y la teoría ciencia de la computación llamado polimorfismo. Es una forma geek de decir
que el mismo verbo se puede aplicar a diferentes sustantivos.

Esposa: No entiendo.

Ryan: Bueno… mirá la mesa. ¿Cuales son los sustantivos? Taza, bandeja, diario, control remoto. Ahora, ¿Qué son
algunas de las cosas que podés hacer con todas esas cosas?

Esposa: No la agarro… [N.d.T.: Soy un capo con los juegos de palabras (?)]

Ryan: Podés agarrarlos, ¿ciero? Podes levantarlos, podés tumbarlos, podés quemarlos. Podés usar esos verbos
exactamente en cualquiera de los objetos de ahí. [N.d.T: Está difícil tumbar un diario, pero... bueno.]

Esposa: Bueno… ¿y?

Ryan: Bueno, eso es importante. ¿Qué si en vez de poder pedirte “agarrá la taza” y “agarrá el diario” y “agarrá el
control remoto” tuviera que usar un verbo distinto para cada sustantivo? No podría usar la palabra “agarrar”
universalmente, sino que tendría que pensar en una nueva para cada combinación de verbo y sustantivo.

Esposa: ¡Guau! ¡Eso es raro!

Ryan: Sí, lo es. Nuestros cerebros son de alguna manera suficientemente inteligentes como para saber que los mismos
verbos pueden aplicarse a muchos sustantivos diferentes. Por ejemplo, no puedo conducir una taza ni beber un auto,
pero algunos verbos son casi universales, como GET [agarrar/pedir], PUT [poner], y DELETE [borrar].

Esposa: No podés borrar una taza…

Ryan: Bueno, claro, pero la podés tirar a la basura. ¿Ese era otro chiste, no?

Esposa: Sip.

Ryan: Entonces, HTTP —este protocolo que Fielding y sus amigos crearon— es todo acerca de aplicar verbos a
sustantivos. Por ejemplo, cuando entrás en una página, el nevegador hace un HTTP GET en la URL que escribís, y lo
que vuelve es una página web

Las páginas web suelen tener imágenes, ¿no? Esos son recursos separados. La página sólo especifica las URLs a las
imágenes y el navegador hace más HTTP GET en ellas hasta que todos los recursos se obtienen y se muestra la
página. Pero lo importante acá es que sustantivos muy diferentes pueden ser tratados de la misma manera. Sea el
sustantivo una imagen, texto, video, un MP3, una presentación de diapositivas, o lo que sea, puedo obtener con GET
todas esas páginas de la misma forma, dada una URL.

Esposa: Parece que GET es un verbo importante.

Ryan: Lo es. Especialmente cuando usas un navegador, porque los navegadores más que nada solo piden las cosas.
No hacen muchas otras interacciones con los recursos. Esto es un problema, porque hizo que mucha gente asuma que
HTTP es solo para lectura. Pero HTTP es en realidad un protocolo de propósito general para aplicar verbos a
sustantivos.

Esposa: Lindo. Pero sigo sin ver cómo esto cambia nada. ¿Qué tipo de sustantivos y verbos querés?

Ryan: Bueno, los sustantivos están ahí, pero no en el formato apropiado.

Imaginate cuando estabas navegando en amazon.com buscando cosas para comprarme para navidad. Imaginate que
cada producto es un sustantivo. Ahora, si estuvieran disponibles en una representación que una máquina pudiera
entender, podrías hacer un montón de cosas interesantes.

Esposa: ¿Por qué una máquina no entiende una página web normal?
3 de 7
Ryan: Porque las páginas web están diseñadas para ser comprendidas por la gente. A una máquina no le importa la
disposición y el estilo del contenido. Las máquinas básicamente sólo necesitan los datos. Idealmente, todas las URLs
deberían tener una representación legible por humanos, y otra para máquinas. Cuando un navegador hace GET para
pedir un recurso para un humano, pedirá la legible por humanos.

Esposa: Entonces. ¿Todos tendría que hacer formatos máquina de todas sus páginas?

Ryan: Si fuera valuable.

Mirá, estuvimos hablando de esto con un montón de abstracción. ¿Qué tal si tomamos un ejemplo real? Sos una
maestra. En una escuela, me imagino que tendrás un gran sistema informático, o tres o cuatro sistemas, más
seguramente, que te dejan manejar a tus estudiantes: en qué clases están, qué notas tienen, contactos de emergencia,
información acerca de los libros que usás en el aula, etcétera. Si los sistemas están basados en web, probablemente
hay una URL para cada uno de los sustantivos involucrados: alumno, maestro, clase, libro, aula, etcétera. Ahora
mismo, pedir la URL mediante un navegador te devuelve una página web. Si hubiera una representación legible por la
máquina para cada URL sería trivial agregar nuevas herramientas al sistema, porque toda esa información sería
consumible de forma estándar. También haría bastante más fácil que cada sistema se hable entre sí. O, podrías
construir un sistema estatal o nacional que pueda hablar con cada uno de los sistemas escolares para obtener las
calificaciones de las pruebas. Las posibilidades son ilimitadas.

Cada sistema obtendría información de los demás usando un simple HTTP GET. Si un sistema necesitara agregar algo
a otro, usaría HTTP POST. Si quisiera actualizar algo, usaría HTTP PUT. Lo único que falta averiguar es qué forma
tienen los datos.

Esposa: ¿Entonces en esto es lo que vos y toda la gente de computadoras está trabajando? ¿Decidir la forma que los
datos deberían tener?

Ryan: Desgraciadamente, no. Por el contrario, la mayoría está trabajando escribiendo capas de especificaciones
complejas para hacer cosas de una forma diferente que no es ni remotamente tan útil o elocuente. Los sustantivos no
son universales ni los verbos polimórficos. Estamos tirando a la basura décadas de cosas que de verdad se usan y
técnicas demostradas, y empezando de nuevo con algo que se parece mucho a otros sistemas que fallaron en el
pasado. Usamos HTTP, pero sólo porque nos ayuda a hablar menos con los encargados de redes y seguridad.
Cambiamos simplicidad por herramientas llamativas y diseñadores automáticos.

Esposa: ¿Por qué?

Ryan: No tengo idea.

Esposa: ¿Por qué no decís algo?

Ryan: Quizá lo haga.

De paso, los N.d.T. no son “Nota del Traductor”, sino “Nota del Tordek”.

7 Comentarios a “Como le expliqué REST a mi esposa”

1. Absorto dijo:

Martes 21 de Octubre de 2008, 21:44

A mi me pareció que los comments del post original eran muy interesantes también. Traduje unos cuántos:

1.

4 de 7
Wey, tu esposa realmente ha de quererte para aguantar todo eso que obviamente te interesa mucho mas a ti que
a ella! Digo, yo no soy casado (quiza por eso), pero cualquier chica con quien he estado (que no tuviera perfil
tecnico) habria volteado la vista al cielo y declarado sin interes: “bueno, si, juatever” como con la cuarta parte
del dialogo. Lo se porque me ha pasado mas de una vez! :-)

Mike Schinkel on Monday, September 04, 2006 at 02:52 AM 37#


2.

Estupido post sexista!

p on Tuesday, September 05, 2006 at 09:57 AM 39#

3.

Esta es la Mejor descripcion que he leido de REST! Ahora entiendo – solia pensar que era nomas otro metodo
para obtener informacion, en competencia con RPC, SOAP, etc. Pero con tu articulo entiendo que es una
forma universal de mapear informacion – en adelante desarrollare con esta arquitectura!

Jeff S on Tuesday, September 05, 2006 at 01:09 PM 41#


4.

Que descripcion ingeniosa. Gracias por esclarecer el tema para todos.

greg on Tuesday, September 05, 2006 at 04:39 PM 43#


5.

Buena explicacion, Ryan… Es una de las explicaciones mas simples de REST que me he encontrado. Gracias
por compartirla.

Jay Jones on Wednesday, September 06, 2006 at 04:32 PM 45#


6.

p: Uggghh. Admito que el post me parece un tanto sexista ahora que lo mencionas. Nunca se me ocurrio que
podia interpretarse asi. No quise implicar que mi esposa es ignorante debido a que es mujer. En el trabajo a
veces me refiero a “como se lo explicaria a mi esposa” como una forma simple de decir que describo algo en
terminos que entenderia alguien terrenal (como el tipo de personas que hace decisiones de compras :) ) Por
supuesto, todos en el trabajo saben que mi esposa no tiene perfil tecnico y que que es de las pocas personas
fuera del trabajo con quienes tengo conversaciones adultas.

Wey, tu esposa realmente ha de quererte para aguantar todo eso que obviamente te interesa mucho mas a ti que
a ella!

Es bastante mas complicado que eso — da para escribir un post nomas acerca dello.

Falta un poco de contexto acerca del origen del post: habia estado absorto en el trabajo y no la habia visto
mucho durante la semana. Cuando eso ocurre empieza a ponerse celosa de la laptop y merodea leyendo sobre
mi hombro – es una senyal, significa: apagala y ponme atencion a mi. Si no hago caso, me interroga acerca de
lo que sea que haya en la pantalla. Si tengo suerte sera vim y una terminal corriendo screen, lo que la
desconcierta y se va. Si no, suelo tener abierto un navegador y mi lector de noticias. Casualmente ocurrio que
esta vez leia la biografia de Roy asi que vio su foto y dijo “quien es Roy Fielding?!” con el tono e infleccion
que uno usaria para decir Que Rayos?

Cuando esto ocurre, suelo decir “Ah, no es nada” o del estilo de “son ahi unas cosas”.

El chiste es que en realidad no trataba de explicarle nada al principio. Empezo como una especie de broma –
del tipo: cuidado con lo que pides. Pero luego va y dice: “ah, ya entiendo”. Asi que segui y segui y de pronto ya

5 de 7
estabamos hablando de polimorfismo y de canonizacino de URLs y todo tipo de mamadas.

Me activa a proposito nomas para ver mis brazos gesticulando y esa vena que brota en mi frente mientras trato
de describirle cosas. No creo que ponga tanta atencion a lo que de hecho diga.

Ryan Tomayko on Wednesday, September 06, 2006 at 06:20 PM 48#

7.

Asombroso. En tantos niveles. La explicacion de REST es excelente, y a pesar de haber sido expuesta a alguien
no-tecnico, contiene suficiente detalle para el lector tecnico que no domina el tema.

Respecto de tu ultimo comentario, los merodeos, la vena en la frente y las conversaciones adultas son reflejos
extranyos de mi propia vida. Tambien a veces me toca lidiar con “por que no te casas con la computadora?”
cuando se harta de que este de geek en mi tiempo libre.

Steve Collins on Wednesday, September 06, 2006 at 08:11 PM 50#

8.

Creo que tu pagina esta bien. Buena descripcion basica del estilo arquitectonico. Entre mas aprendo del, mas
dificil encuentro no participar de la controversia. No me parece que tu pagina modele un escenario sexista. Tu
esposa bien pudo haber sido un ninyo que queria aprender mas. No que niegue la existencia del sexismo. No.
Existe, y es danyino. Pero creo que puedes relajarte. No tiene nada de malo ser lindo.

chris p on Thursday, September 07, 2006 at 02:07 PM 52#

10.

No me parecio que tu post fuera sexista. Por favor, relajense! El hecho es que es un escenario muy comun el
que se describe. Si el autor se hubiera hecho pasar por una mujer explicandole a su esposo no-tecnico cuando
mucho habria sonado condescendiente y realmente tendrias que ser inocente para interpretarlo asi.

De hecho, me parece que es sexista proclamar que este post es sexista, porque los sexos de las personas no son
el tema y no debieran importar en modo alguno.

mi granito de arena

P.D. no puedo terminar mi comentario sin decir algo acerca del tema: excelente descripcion de REST! bien
hecho.

Pierre

Pierre on Monday, September 11, 2006 at 12:03 PM 56#

11.

bravo! una gran introduccion a REST se transforma en una polemica sutil (e introspectiva). Llegue aqui desde
el articulo de REST en la wikipedia y he de decir que quien sea que agrego la liga tuvo una buena idea.

ivar vasara on Saturday, September 16, 2006 at 03:48 AM 58#

12.

Quiero secundar el comentario de ivar. Las analogias de REST de Ryan me funcionan muy bien, y tambien yo
lo encontre en la wikipedia.
Kevin Howard on Wednesday, September 27, 2006 at 09:00 AM 60#

6 de 7
13.

Bueno! Un articulo que mi esposa/hijo/amigo/padre/madre/hermano/etc. podria entender.

Por que es importante el sexismo en este post?

Dave on Thursday, October 05, 2006 at 05:00 PM 62#

7 de 7

Das könnte Ihnen auch gefallen