Programación en PHP: el papel de las APIs
Hoy vamos a tratar un tema que es posible que hayáis oído alguna vez en el desarrollo, ya sea web o móvil. Se trata de las APIs, o Interfaz de programación de aplicaciones. Una API son el conjunto de funciones y procedimientos que ofrece una biblioteca, en términos de programación, para poder comunicar mejor los servicios entre ellos. En la actualidad, gracias a esto logramos obtener resultados concretos con muy poco esfuerzo, ya que el trabajo real reside en crear dicha API. Esto da lugar a dos términos muy mencionados en el desarrollo: el frontend y el backend. ¿De qué se trata? Vamos a verlo a continuación.
La diferencia entre back y front en programación web
Hace unos cuantos años, allí por 2004, cuando queríamos dar funcionalidad a una web acudíamos a PHP para poder conectar con nuestro servidor y recuperar datos. Estos datos se podían representar en vivo en el caso de que ya existieran, o se procedía al registro cuando eran nuevos y el usuario los introducía. Si analizamos esta situación, vemos que todo el peso es generado por el mismo servidor, es decir, nos da tanto el código que el navegador va a ejecutar junto a los datos dinámicos. Esto ya no es así. En la actualidad, el aspecto que verá el usuario y los datos recuperados de la base de datos van por separado. Estas dos situaciones son las que se conocen como frontend y backend respectivamente.
- Backend: back significa “detrás” en inglés y nos da una idea del significado de la palabra al completo. Debemos interpretarlo como todas las instrucciones y librerías que se ejecutan “por detrás” del usuario, en la parte trasera de máquinas, y, por lo tanto, no debe tener nada que ver con el aspecto que verá el usuario. Aquí es donde se genera y funciona la API que hemos mencionado al principio.
- Frontend: front significa “delante” y se refiere a todo lo que está por encima de la API. En el frontend si que generamos el aspecto final de la web/aplicación y es lo que ve el usuario.
Vistas las diferencias, es importante actualmente poder separar estas dos estructuras ya que, si lo pensamos, reducimos el peso de servidor cuando mandamos datos solicitados.
Funcionamiento del backend y frontend
- La aplicación hace una solicitud al servidor para recuperar datos. En esta solicitud se mandan algunos parámetros necesarios, como un nombre de usuario, una localización, etc.
- El servidor procesa esta solicitud a partir del dato clave mandado. Por ejemplo, imaginemos que queremos recuperar las fotos de un usuario en Facebook. El dato clave sería el nombre de este usuario, se realiza la consulta y se devuelve las direcciones web de las fotos. Pero no están ordenadas ni colocadas en el espacio. Recordemos que sólo estamos devolviendo fotos. Esto es trabajo de backend.
- Cuando se completa la solicitud y hemos recuperado las fotos, la aplicación trata estos datos. Es ahora cuando se colocan ordenadamente en pantalla gracias al frontend.
Con estos tres pasos tan sencillos hemos logrado completar una solicitud de datos, separando las tareas. Que el servidor no se tenga que ocupar también de colocar en pantalla las fotos hace que únicamente trabaje con datos. Si bien es cierto que para tareas muy sencillas no se nota esta diferencia, recordemos que Facebook es accedido por millones de usuarios. Imaginad que cada uno de estos usuarios no sólo pidiese datos, si no también tareas relacionadas con el aspecto de su aplicación. Se saturaría el servidor.
Esta clase de API tiene un nombre: API REST, y es la clave detrás de aplicativos que funcionan con grandes cantidades de datos. Grandes servicios como Twitter, Facebook, Instagram, etc usan esta tecnología, y es el estándar en el desarrollo moderno.
De todos modos hay muchas maneras de realizar una API rest hoy en día. Normalmente se habla de PHP y MySQL por ser las vías más sencillas de programar esta herramienta. Recordad que PHP es un lenguaje web con una curva de aprendizaje muy asequible para todo el mundo, y SQL es el lenguaje usado en base de datos de forma muy extendida. De hecho incluso en aplicaciones móviles existe SQLite, que viene a ser una versión ligera de SQL para dispositivos que priman mucho más el uso de la memoria. Pero estamos en una era que hay muchas alternativas en el desarrollo.
Ya no es necesario saber Swift o Java para hacer aplicaciones nativas en los respectivos sistemas operativos, iOS o Android. Gozamos de una gran libertad para escoger nuestras herramientas, y, una vez más, JavaScript se presenta como otro candidato, gracias al paquete MEAN.io, que básicamente es el grupo de herramientas para realizar APIs Rest con este lenguaje, compuesto por MongoDB, Express, AngularJS y NodeJS. En otro post hablaremos con profundidad de todo esto, ya que merece una dedicación especial.
¿Conocíais las API REST?¿Os parece un concepto útil? Házmelo saber en los comentarios.
Curso relacionado: Curso de Creación y Diseño de páginas web