Una API, es el interface de tu aplicación para los programadores. Los usuarios utilizan el interface web, el interface de escritorio, aplicación móvil, etc. y los programadores tu API. La creación de una API no es ninguna tontería y debe ser planificada con mucho cuidado, mucho más que cualquier otro interface que tenga tu aplicación.
Los beneficios de la publicación de una API son enormes. Un buen API puede hacer que el uso de tu servicio o aplicación crezca de forma notable. Tenemos varios ejemplos de servicios cuyo API se ha convertido en el verdadero valor y la aplicación inicial (interface web) han pasado a ser una interface más, en ocasiones mejorada y superada por terceros, gracias al uso de su API.
El servicio de moda es el mejor ejemplo, la web de Twitter.com ha sido superada por otras aplicaciones web de terceros en cuanto a funcionalidad, potencia y facilidad de uso, todo gracias a la publicación de su API. La cantidad de clientes que han surgido para todas las plataformas es ingente y han contribuido a la popularización y extensión del servicio a un coste bajo.
El core de Twitter es su API y su valor el contenido, todas esas aplicaciones y clientes surgidos a partir de ella aportan 55 millones de tweets al día con un coste cero de desarrollo. Sólo un pequeño porcentaje se realiza a través de la web original, la de Twitter.com.
Una API debe ser muy fácil de utilizar, atraerás a muchos programadores sin son capaces de tener algo funcionando en una tarde. Atraerás a muchos programadores sin no les mareas cambiando una y otra vez las especificaciones, no van a estar reprogramando su aplicación cada poco tiempo, no usarán tu API.
Planifica bien tu API, piensa bien qué quieres que sea capaz de hacer (y de no hacer) y como quieres que lo haga. El día que decidas publicarla no hay vuelta atrás.
- Enumera los distintos objetos de tu aplicación (perfiles, búsquedas, etc.)
- Enumera los distintos métodos de cada uno de estos objetos ( perfil: Leer, Crear, Modificar,…)
- Fija un sistema de autenticación para los usuarios de tu API, el más habitual es el API key, también se puede utilizar el clásico par de usuario/contraseña o el cada vez más habitual OAuth.
- Fija límites en las peticiones. Limita el número de peticiones que un usuario de tu API puede hacer por día o por hora. Un uso abusivo podría hacer caer tu servicio o penalizar el rendimiento del resto de usuarios.
- Limita la cantidad de datos que entregas en cada petición, unido al límite de peticiones por día asegurará que no pierdas el control de tus datos. Una solución es el paginado de la información o entregas en bloques. Analiza cuidadosamente cada método, este no debe ser capaz de entregar por ejemplo todos los perfiles del sistema en una sola petición.
- Mide su uso. Establece un sistema de métricas sobre el uso que se realiza de tu API. Al igual que mides el uso de un interface web (las estadísticas de tu página), mide también tu API.
- Documenta MUY BIEN tu API. Si tu API no está debidamente documentada y de forma sencilla, los usuarios no programarán para ella. Los sistemas Wiki son los más sencillos de utilizar por los programadores y fáciles de mantener por nuestra parte. Genera una documentación sencilla, si generas 200 páginas, no las leerá nadie.
- Habilita un sistema de foros donde los usuarios puedan plantear sus dudas, sugerir mejoras,… y ayúdales.
- Vigila los posibles agujeros. Asegúrate de que tu API no podrá hacer nada más que aquello para lo que fue publicada. Tenemos que tener especial cuidado con los métodos relacionados con los borrados de información y con la privacidad.
Antes de terminar quería comentar que en España ha surgido una empresa que se encarga de hacer todo este trabajo por nosotros, se llama 3Scale y me encanta su negocio. Se encargan tanto de desarrollar nuestra API como de hospedarla, realizar las métricas, etc.
[...] This post was mentioned on Twitter by Fernando del Pozo, Enrique O'Connor. Enrique O'Connor said: Cada dia cobra mas sentido tener Api @fdelpozo: ¿Por qué una API? http://bit.ly/bng8R3 [...]
[...] ¿Por qué una API? http://www.fernandodelpozo.com/2010/05/23/por-que-una-api/ por Nabuko hace 3 segundos [...]