Una interfaz de programación de aplicaciones o API, por sus siglas en inglés, es un conjunto de protocolos que permite la comunicación entre distintos sistemas independientemente del lenguaje de programación o la plataforma. Se suele decir que las API ayudan a las máquinas a hablar entre ellas porque, gracias a la comunicación mediante un conjunto estructurado de reglas, es posible interactuar con sistemas de forma programática y sin necesidad de una interfaz web.
Las API también te ayudan a integrar nuevas soluciones con las aplicaciones que ya tienes y automatizar procesos. Hay miles de API en internet, muchas de las cuales se pueden usar gratis. Puedes acudir a un directorio público como Postman API Network o visitar el sitio web del servicio o producto que quieras integrar para comprobar si hay alguna disponible.
Aunque hay muchos tipos de arquitectura de API, como SOAP (Simple Object Access Protocol o protocolo simple de acceso a objetos), GraphQL y RPC (Remote Procedure Call o llamada a procedimiento remoto), en esta guía vamos a centrarnos en uno de los más comunes: REST (Representational State Transfer o transferencia de estado representacional). Los servicios web basados en REST se conocen como API RESTful. Las API RESTful emplean HTTP y tienen un aspecto muy similar a la URL de una página web.
Seguro que has visto un montón de API en acción sin darte cuenta. Imagina que estás haciendo un pedido al sitio web de una cadena de pizzerías. Cuando vas a pagar, tienes que indicar la dirección de entrega. Empiezas a escribirla en la barra de búsqueda y, de repente, la ciudad, la provincia y el código postal se rellenan automáticamente. A continuación, te dispones a añadir los datos del pago y ves que el trámite se realiza mediante un servicio de confianza. Por último, después de hacer el pedido, te registras en un programa de fidelización para ganar recompensas con tu perfil en una red social.
Pues bien, la dirección que se rellena automáticamente, el procesamiento del pago y el registro con el perfil de una red social son cosa de la integración con API. En lugar de crear cada uno de estos componentes desde cero, el sitio web utiliza la API de Google Maps para identificar fácilmente la dirección, la de Square para integrar el sistema de pago y la de Facebook para crear cuentas de fidelización.
Las API REST se sirven de peticiones y respuestas HTTP para intercambiar información a lo largo y ancho de internet. La gran ventaja de esto es que el cliente web que hace la petición y el servidor de API que envía la respuesta hablan el mismo idioma. Es más, la petición y la respuesta utilizan el mismo protocolo web HTTP.
Las API REST se utilizan para todo tipo de cosas, sobre todo para funciones de bases de datos CRUD (Create, Retrieve, Update and Delete o, lo que es lo mismo, crear, obtener, actualizar y eliminar). Por ejemplo, las API REST pueden llevar a cabo acciones de creación y utilizar la API de Facebook para crear una cuenta de fidelización. También pueden obtener datos, como cuando se utiliza la API de Google Maps para obtener una dirección.
Las peticiones a API están formadas por cinco componentes.
URL base: el prefijo del punto de conexión.
Punto de conexión: indica a la petición dónde debe dirigirse.
Método: determina el tipo de petición que se está realizando.
Encabezados: proporcionan información que permite la comunicación entre el cliente y el servidor.
Cuerpo: contiene la información que se quiere enviar al servidor.
Ahora que conocemos lo básico, vamos a profundizar un poco más.
Aquí tienes el ejemplo de un punto de conexión de la API de Places de Google Maps:
https://maps.googleapis.com/maps/api/place/autocomplete/
Este punto de conexión tiene dos componentes. El primero es la URL base; es decir, el dominio desde el que se ejecuta la API. En el ejemplo, https://maps.googleapis.com es la URL base. La ruta del punto de conexión determina el recurso para el que se envía la petición. En este caso, se trata de un recurso concreto de la API de Places de Google Maps llamado Autocomplete, de modo que la ruta es la siguiente: /maps/api/place/autocomplete.
¿Te preguntas por qué parece una URL? Pues porque lo es. Recuerda que esta petición pasa por HTTP. Si pones esto en el navegador, se abrirá una página en HTML muy básica con la respuesta en un formato u otro dependiendo de la API. Uno de los más habituales es JSON.
En cualquier caso, para que la API haga algo son necesarios otros componentes. El primero de ellos es un método. Los métodos son palabras clave predefinidas que se deben incluir en todas las peticiones. Los más habituales están relacionados con las operaciones CRUD: POST (crear), GET (leer), PUT (actualizar) y DELETE (eliminar). El método le dice a la API qué quieres que haga, y cada punto de conexión espera un método determinado.
Otro de los componentes que se utilizan para llamar a una API es el encabezado de la petición, que en realidad es un encabezado HTTP con información adicional sobre el contexto de la petición. Por ejemplo, el encabezado de una petición puede indicar el idioma que se debe utilizar en ella. La mayoría de las API también requieren encabezados de autenticación que proporcionan información relativa a este proceso al cliente. Podrían considerarse certificados que demuestran la legitimidad de quien utiliza la API y contribuyen a garantizar su seguridad.
En función del método, puede que haya que definir otros datos en el cuerpo de la petición. Por ejemplo, si creas algo mediante un método POST, es posible que tengas que rellenar algunos campos de datos.
Piensa en el registro para una cuenta de fidelización. El usuario rellena unos campos en el sitio web para crear la cuenta. En el backend, se realiza la llamada a una API y los datos indicados por el usuario se añaden al cuerpo de la petición:
{
"first_name": "Manuel",
"last_name": "Romero",
"email": "manuelromero@email.com",
}
Ya conocemos las distintas partes de la petición a una API. La siguiente pregunta es cómo se hace una llamada a una API. Para probar una API y ver su respuesta, puedes enviar una petición mediante cURL o una aplicación como Postman.
Pongamos que quieres obtener los datos de una cuenta de usuario concreta. La respuesta podría ser algo parecido a esto:
HTTP/1.1 200 OK
Content-Type: application/json
{
"comment": "",
"created_at": "2020-04-27T19:40:49+00:00",
"deleted_at": null,
"customer_id": "x4xCwxxJxGCx123Rx5xTx",
"first_name": "Manuel",
"last_name": "Owner",
"email": "manuelromero@email.com",
}
La respuesta que se envía depende de la API y la petición.
Vayamos por partes. La primera línea contiene el estado, que en este caso es 200 y hace referencia a una respuesta realizada con éxito. En la siguiente línea, el encabezado Content-Type indica el formato de la información que se ha pedido; es decir, JSON. Por último, el cuerpo de la respuesta contiene los datos del usuario.
Con esto hemos visto cómo se llama a una API para algo tan sencillo como obtener unos datos, aunque seguramente podrías conseguir la misma información iniciando sesión en la interfaz web de tu aplicación. Lo más normal sería utilizar la llamada a una API para incorporar la petición a tu aplicación y hacer algo con los datos enviados en la respuesta.
Se puede decir más alto pero no más claro: la seguridad es fundamental para las API. Debes asegurarte de que tus datos importantes estén a buen recaudo y de que solo puedan acceder a tu API personas autorizadas. Además de los encabezados de autenticación que hemos mencionado anteriormente, las claves de API son un mecanismo habitual para autenticar a los clientes y dejar pasar únicamente a usuarios legítimos. Otra opción es OAuth, un protocolo estándar con el que los usuarios pueden permitir que aplicaciones de terceros accedan a sus recursos sin necesidad de compartir sus credenciales de inicio de sesión. Limitar el volumen de peticiones que se pueden atender en un periodo determinado también es una buena forma de evitar los usos indebidos y mantener el buen funcionamiento de una API. Y el cifrado HTTPS es indispensable para proteger todas las comunicaciones con la API en tránsito e impedir que la información delicada caiga en malas manos.
Si quieres que los desarrolladores saquen todo el partido a tu API, tendrás que proporcionarles documentación exhaustiva y fácil de entender para que la utilicen a modo de hoja de ruta. Tu documentación debe tratar todos los temas importantes, como los puntos de conexión, el formato tanto de las peticiones como de las respuestas y los requisitos de autenticación, y a ser posible incluir fragmentos de código que les puedan resultar de utilidad. Tampoco está de más incluir información sobre la resolución de problemas y los límites de volumen, así como explicar las prácticas recomendadas con la API y especificar hasta dónde puede llegar. Una documentación de calidad ayuda a familiarizarse antes con una API y a integrarla en las aplicaciones sin contratiempos.
Cuando tu API empiece a crecer y evolucionar, el control de versiones se convertirá en una parte esencial del proceso. Al fin y al cabo, querrás tener la capacidad de añadir funcionalidades y hacer cambios sin que las integraciones existentes se vayan al traste. Una manera de hacerlo es incluir el número de versión directamente en la URL de la API; por ejemplo, /api/v1/resources. Así está claro de qué versión se trata. Otra posibilidad es añadir el control de versiones al encabezado de la petición, de forma que los clientes puedan indicar a cuál quieren acceder. La idea es tener una estrategia de versiones bien definida, informar de cualquier modificación a los desarrolladores y acordarse de proporcionar guías de migración cuando se realice un cambio de gran calado.
Las pruebas son el equivalente a las revisiones médicas de las API. Debes asegurarte de que funcionen correctamente, sean fiables y cumplan los requisitos. Las pruebas unitarias son un buen punto de partida, ya que te permiten probar componentes de la API de forma individual y verificar que cada función o método funciona según lo previsto.
Las pruebas de integración también son importantes para garantizar que los distintos elementos de la API se entiendan a la perfección y den los resultados que buscas.
Por último, si quieres comprobar de qué es capaz tu API, lo suyo es que hagas pruebas de carga. Estas pruebas te servirán para identificar posibles carencias en el rendimiento y asegurarte de que tu API pueda gestionar la cantidad de tráfico esperada. Hay un montón de herramientas y entornos automatizados, como Postman, SoapUI y JMeter, que pueden facilitar mucho las pruebas y ayudarte a detectar los problemas cuanto antes.
Si quieres que tu API siga funcionando y sea sencilla de mantener a largo plazo, tendrás que cuidar de ella durante todo su ciclo de vida. Las puertas de enlace de API son como porteros de discoteca: todas las peticiones a la API tienen que pasar por ellos y se encargan de tareas tan importantes como la autenticación, la limitación de volumen y el enrutamiento.
El control de versiones y la retirada de las API también desempeñan un papel clave durante su ciclo de vida. Cuando lances una nueva versión de tu API, tendrás que proporcionar rutas de migración claras y comunicar a los desarrolladores cuándo van a desaparecer gradualmente las anteriores. Y si alguna vez necesitas retirar directamente una API, avisa con suficiente antelación para que les dé tiempo a actualizar sus integraciones. La planificación y la comunicación son el secreto para lograr que tu API vaya sobre ruedas y los usuarios no se vean afectados por interrupciones graves.
La API de Fastly es una API RESTful que ofrece acceso a todos los servicios y las cuentas de Fastly disponibles a través de la interfaz web de Fastly.
Gracias a ella, podrás trabajar con objetos relacionados con los servicios y las cuentas de Fastly como mejor te venga. Tú decides si quieres integrarla en tus procesos o automatizar tareas engorrosas y repetitivas. Por ejemplo, puedes utilizar la API de análisis en tiempo real de Fastly para integrar análisis de Fastly en tu panel de análisis particular o poner en marcha un proceso de purga automatizado. Los únicos límites son tu imaginación y tu capacidad para programar.
Puedes informarte sobre la API de Fastly en nuestra documentación y utilizarla completamente gratis con tu cuenta de Fastly.
Más información sobre la seguridad para API de Fastly