Apuntes sobre APIs

ApiUna gran necesidad y oportunidad para una herramienta onlie es poder compartir sus potencia de una forma fácil con el resto de la comunidad de desarrolladores para que entre estos puedan usar los datos y capacidades de la aplicación para crear nuevos servicios. Por esto en la web 2.0 es algo totalmente necesario crear una API no solo para que otros servicios puedan acceder al nuestro si no para que inclusive nosotros podamos desarrollar y cambiar la parte gráfica de la aplicación independientemente del código que ofrece el servicio, ofreciendo las mejores prestaciones a los desarrolladores internos y externos. Por esto existen API abiertas que cualquiera puede utilizar y cerradas, que son propias y especificas dentro del servicio.

Ultimamente he visto q toda la web tiene de estas API y que cada una funciona casi de una forma, pero quería reunirme por escrito las igualdades que he ido viendo por si me puede servir en algún proyecto o para crear una propia en algun proyecto..

Al parecer entre varios estándar las web 2.0 prefieren con diferencia usar REST, la cual esta basada en la utilización de los métodos GET, POST, PUT y DELETE para el envío y recepción de información entre el usuario y el servidor, aun que este estándar no se cumple en la mayoría. El estándar primitivo indica que para subir algún archivo se debería usar PUT, y para borrarlos DELETE entre otras funciones reestablecidas, devolviendo siempre los datos en XML. Pero normalmente se usa un sistema con el que están más familiarizados el resto de desarrolladores.
Lo que se suele usar es un sistema mixto que recibe los datos por REST usando FriendlyUrl y GET, y utilizando POST para las modificaciones o para subir archivos.

Esto se suele realizar así por que es muy fácil utilizar un proxy o un programa en el servidor que realce una cache parcial de los datos si estos se pasan dentro de la URL de consulta, y es mas complejo si van acompañados de los datos en la misma cabecera…

En cuanto a las resupuestas de las aplicaciones lo que mas abunda son en XML. es un sistema facil y limpio que es facil de leer por todos los lenguajes en los que se quiera hacer el mashup. Pero el tiempo ha llevado a los creadores de API a poner alternativas con mejor rendimiento para los lenguajes estrella en la web, y casi todas se pueden traducir a jSon, un sistema para mostrar la información mucho mas liviano en aplicaciones JavaScript o PHP. Aunque para la utilización de los datos en PHP, debido a que solo desde la versión 5.0 esta soportado natívamente jSon, algunas API permiten obtener los datos convertidos por serialize() directamente para recogerlos con unserialize() de una forma rápida y liviana.

Como norma general no se suele utilizar la identificación del usuario o el almacenamiento de datos en cookies debido a que seria un obstáculo en algunos lenguajes como también lo seria para el almacenamiento en cache.

Algunos lenguajes de ejemplo:
APIs de las aplicaciones de google | code.google.com
APIs de las aplicaciones de Yahoo | developer.yahoo.com
API de vimeo | www.vimeo.com/api

Como ultimo apunte os dejo un enlace sobre como crear un motor de respuestas REST desde sematopia.com

2 opiniones en “Apuntes sobre APIs”

  1. Hola muy buenos días, de casualidad encontre tu blog y me gusto mucho, y particularmente este post, quería saber si has implementado algún webservices del tipo REST o algo así, si tienes algún ejemplo o algo, la verdad no se como empezar se mas o menos como va todo pero no se como implementarlo en php….
    Alguna sugerencia, muchas gracias..

  2. Hola Eduardo, muchas gracias, su trabajo cuesta mantenerlo 😛

    Sobre el tema del REST, en la ultima linea hay un enlace para crear un motor de respuestas REST que utiliza una clase PHP para hacer todo el trabajo, pero como habrás podido ver si lees un poco mi web soy mas partidario de las funciones, y hace un tiempo cree una que se llamaba friendlyUrl y que puede ser un soporte perfecto para empezar.

    Con esa función puedes extraer los diferentes “comandos” de la URL de la petición REST y procesarlos con un simple if() o switch() poniendo dentro el código que quieres que se ejecute cada vez…
    Si tienes alguna duda coméntame algo mas concreto y te digo si te puedo ayudar 😉

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *