18 agosto, 2008

REST, simplemente no lo entiendo

Hace unos días, y al estilo del cuento el Nuevo Traje del Emperador, Damien Katz resaltaba que aunque REST está muy bien, hay dos verbos que apenas se usan (PUT y DELETE) y que debe ser suficiente con POST (para modificaciones) y GET (para obtener información que además puede ser cacheada de forma natural). Comprendiendo dónde falla SOAP, REST no lo convierte en una respuesta adecuada. Si lo simple es mejor (KISS) ¿para qué complicarse con los verbos PUT y DELETE que no están extendidos y que complican el estándar? La respuesta de la comunidad no se hizo esperar. Todos trataban de convencerle de las ventajas, pero las evidencias están ahí. El argumento más utilizado era que los verbos forman parte de la especificación HTTP sobre la que la web ha crecido, pero ciertamente, de los cuatro verbos sólo GET y POST han tenido una acogida para su uso por los servidores de aplicación y respecto a las ventajas por el cache de información, sólo se está aplicando realmente al verbo GET, por lo que la contestación de Damien tiene todo el sentido: "La web está construida sobre REST, por tanto REST es bueno" Caca de vaca. Lo cierto es que la propuesta de uso de Damien sigue respetando la filosofía REST, aunque no de forma tan purista y sí de forma más simple. Recordemos que REST no está respaldado por la industria sino que es, más bien, una propuesta de la misma comunidad de desarrolladores, más de "garaje". La industria sigue respaldando SOAP, aunque cada vez menos, por ser buzzword compliant, es decir, que cumple con las palabras técnicas de moda como XML. Da igual que se haya demostrado que es un estándar tan complejo que resulta extremadamente incómodo e inadecuado programar sobre él. Dare Obasanjo responde a Damien en este excelente post. Explica en qué consiste exactamente crear servicios web basados en REST y hace énfasis en el punto más complejo, el de no utilizar cookies para guardar el estado entre peticiones y usar enlaces hipertexto en su lugar. Finalmente indica que realmente no es necesario usar los verbos en discordia (PUT y DELETE), a pesar de que es lo que más se ha difundido de la filosofía REST y que, por tanto, lo que proponía originalmente Damien no implica alejarse de las ventajas de la propuesta original. Como único caso, el verbo PUT (equivalente a un UPDATE) es idempotente, lo que quiere decir que independientemente del número de veces que se realice, el resultado es el mismo, lo que no puede suponerse para el POST.

Actualización

He actualizado este artículo porque Dave Winer, el que creó XML-RPC (otra de las opciones y de la que partió SOAP como origen) indica que siempre olvidamos XML-RPC. Como autor de dos de los sistemas RPC está obviamente en contra de REST. Además, dice que echa en falta un formato para serializar estructuras, listas y tipos escalares. Como bien le contesta Simon Willison, ese sería JSON, al que por cierto tampoco le gusta nada a Winer.

Actualización

Finalmente, en otro post, Damien reconoce haberse equivocado al no leer la especificación de REST y en particular el capítulo 5, tal y como le indica Sam Ruby. Básicamente el extendido uso de POST y GET para servicios web también se puede considerar RESTful.

Publicar un comentario en la entrada

Últimos links en indiza.com