3

Un poco de introducción al RESTful

Como mi siguiente publicación será acerca de como crear API’s RESTful con Django-REST-Framework, es que me gustaría hablar primero sobre que son en si las API’s RESTful, y la forma en la que más me gusta describirlas es imaginándolas como la mejor manera de comunicar dos o mas aplicaciones entre si, sin importar en que plataforma o lenguaje esté escrita cada una; a que me refiero con esto, simplemente al hecho de que RESTful es solo un protocolo de comunicación basado en urls, en donde tanto la aplicación A como la aplicación B saben como es que las peticiones y las respuestas entre estas estarán estructuradas. 

Pongamos un ejemplo claro, imaginemos que desarrollamos un sitio de ventas o un carrito de compras en Django, en donde tenemos catálogos de productos, listas de resultados, etc. Pero estamos pensando en desarrollar una aplicación móvil en Android para este sitio; por la razón que quieran optamos en desarrollarla nativa, y ahora tenemos el problema de cómo se comunicará la aplicación con la base de datos en el servidor de nuestro sitio en Django. Cabe mencionar que Android no es capaz de conectarse directamente con el servidor de bases de datos (MySQL, PostgreSQL, MongoDB, etc.), además de que guardar en la propia aplicación Android los accesos a nuestra base de datos constituye una grave falta a la seguridad de nuestro sitio, lo mejor es que todo esto se quede dentro del servidor; entonces con esta limitante en mano lo único que nos queda es acudir a un API, ósea una forma en la que el servidor web podrá comunicarse con nuestra aplicación, pero, ¿exactamente como funciona esto?

Sigamos imaginando, y para este punto nuestro servidor ya tiene implementado un API hecho por ejemplo con Django-REST-Framework, eso significa que si yo entrara a la hipotética url “http://nuestrositioweb.com/api/productos/”  lo que sucedería es que el servidor no nos enviaría una pagina en HTML, si no alguna respuesta en JSON o XML dependiendo de cómo configuremos el API, en esta respuesta estaría toda la lista de productos de nuestra tienda en un formato que puede ser fácilmente convertido a objetos Java para el caso de Android, y dentro de nuestra aplicación Android podemos usar esa respuesta como un a lista de objetos que ya puede ser fácilmente manipulada, de igual forma la aplicación pude enviarle al servidor por ejemplo, los datos de una compra que se hizo desde el teléfono, por medio de la imaginaria url “http://nuestrositioweb.com/api/compras/”, este recibe el JSON o XML y lo convierte a objetos Python para poder ser manejados por el Back-end en Django.

Claro que la explicación esta muy por encima, pero básicamente ese es el principio de comunicación mediante API’s RESTful.

Pero para que el servidor pueda saber si lo que queremos de cierta url es una lista de resultados o ingresar una compra nueva, es necesario entender un poco mas el protocolo de comunicación http, según este, hay cuatro diferentes formas de comunicarnos con un servidor, mediante los métodos POST, GET, PUT, y DELETE (recientemente se agregaron algunos otros como PATCH y OPTIONS pero aun no son soportados por todas las librerías web), y entendiendo un poco esto, siempre que lo que queramos sea obtener alguna información del servidor usaremos el método GET, si por el contrario lo que queremos en enviar la información de algo que se agregará a la base de datos usaremos POST. PUT nos ayuda a actualizar los datos de un registro ya existente, por lo general para actualizar necesitamos enviar también el ID del registro a actualizar, ya sea como un parámetro o como parte de la url (“http://ejemplo.com/api/registro/12/” en donde 12 es el ID del registro), de cualquier manera también tenemos que enviar los datos actualizados con los que se reescribirá el registro. Y por ultimo tenemos DELETE, en este caso el nombre lo dice todo, este método nos ayuda a eliminar un registro, y al igual que PUT necesitamos enviar de alguna forma el ID del registro a eliminar.

Una explicación mas técnica y detallada de que es en si RESTful puede ser encontrada aquí http://es.wikipedia.org/wiki/Representational_State_Transfer.

Para entender mas a profundidad como podemos trabajar con API’s RESTful sin imaginar tanto, es siguiendo los tutoriales de Django-REST-Framework, los cuales están en ingles, pero explican muy bien como crear API’s muy poderosas con Django. 

Como ya lo mencioné, en mi próximo articulo hablaré más de la librería REST Framework de Django, y próximamente subiré un curso en video tutoriales donde explicare paso a paso como aprovechar esta herramienta en nuestros proyectos.

Jesus Anaya - Programador de python y django con un gusto obsesivo por las series de television.

Comentarios

  1. avatar
    Stan dijo

    Amigable explicación de como funciona un API, desconocía PATCH y OPTIONS.

  2. avatar
    Jesus Urias dijo

    Buenisima explicacion, te diera un mas uno si existiera :D

  3. avatar
    jose duran dijo

    he leido bastante sobre python y django pero nunca encontre una explicacion tan clara de lo que son las api restfull, excelente :-)

Pública un comentario