Saltar al contenido

API REST: ¿Qué son y como funcionan?

noviembre 16, 2020
API REST

Este es un concepto que se ha popularizado mucho en los últimos años, la creaciones de API, API REST, o API RESTFULL son cada vez más demandadas en el mercado de la programación a nivel mundial. Pero, ¿Qué es un API REST y como funcionan? Eso es lo que veremos en este artículo. Aprenderemos cual es la función que cumplen y porque son tan demandadas.

Cuando creamos una aplicación, ya sea de escritorio, móvil o web, casi siempre necesitaremos que dicha aplicación tenga comunicación con un tipo de base de datos. Por ejemplo, la aplicación que te muestra el estado del tiempo, si va a llover o no, tiene que comunicarse con un servidor para poder saber esto y mostrarlo en la pantalla. A esto se le conoce como el «backend».

Un API REST es una aplicación de backend, literalmente es la encargada de consultar la base de datos, procesar esa información y devolver lo que la aplicación móvil necesita. Esta información es obtenida de la base de datos y luego es ordenada y convertida (generalmente) en formato JSON para que cualquier aplicación cliente ( de escritorio, web, o móvil ) pueda acceder a ella.

Podría interesarte: ¿Qué es el formato JSON?

¿Qué es un API?

Por sus siglas en inglés API significa «Interfaz de Programación de Aplicaciones». Ahora te preguntarás ¿Qué es una interfaz de programación de aplicaciones? Bueno en palabras sencillas es una forma de comunicación entre la aplicaciones que estamos creando y otras aplicaciones ya creadas.

En este sentido, una API es todo aquello que te permite comunicarse con otro software. Por ejemplo, los sistemas operativos tienen un API que le permite a los programadores interactuar directamente con el sistema. Otro ejemplo sería la aplicación del clima que mencionamos al principio, se comunica con el servidor a través de una API, en este caso, una API REST.

Podría interesarte: HTTP: Consumiendo un API en Flutter

¿Qué significa REST?

Por sus siglas en inglés, REST significa «transferencia de estado representacional». Un nombre que la verdad no nos dice mucho. Para no confundirnos, nos quedaremos con lo importante, la palabra «transferencia». Eso es lo que las diferencia de el resto de las API.

Podría interesarte:  HTTP: Consumiendo un API en Flutter

Una API del sistema operativo no realiza una transferencia, simplemente recibe una instrucción. Sin embargo, la aplicación del clima necesitará realizar una transferencia de información desde el servidor hasta este celular en específico. Por eso se les llama API REST.

¿Cómo funcionan estas API REST?

Hay una característica más que todas las API REST comparten, funcionan a través del protocolo de internet HTTP. Utilizando sus métodos para enviar y recibir información y paquetes de datos, por lo general en formato JSON, mediante el llamado a determinada función, dependiendo de qué URL es llamada por el protocolo. Eso así no sueña muy claro. Vamos a intentar dejarlo más claro usando un ejemplo.

Quiero aclara que este ejemplo es completamente informativo y que en la vida real hay muchos factores más a tener en cuenta, por ejemplo el cifrado de la información, el uso de tokens para verificar la fuente de la solicitud de información, el guardado en cache para asegurar no hacer llamados repetitivos, etc.

En este ejemplo vamos a realizar el llamado de información en una API gratuita que es muy popular y funciona muy bien. La API tiene la función de mantenernos actualizados sobre las películas y todo lo relacionado a ellas. Para hacer solicitudes a su API necesitas registrarte en themoviedb, ellos te dan todos los pasos a seguir.

Dentro de la página existe una forma de ver el resultado de cada consulta de la API, pero, para que aprendamos más, usaremos un programa llamado POSTMAN, que se usa para comprobar la información que devuelve cualquier API en Internet o local. Podemos descargarlo en su página oficial.

Por ejemplo: Abrimos POSTMAN y hacemos una nueva petición de tipo GET, con una de las URL que nos da TheMovieDB. En este caso usaré la URL para obtener la película más reciente subida. La dirección para hacer esta petición es:

https://api.themoviedb.org/3/movie/latest?api_key=TU_KEY_PERSONAL&language=en-US

Como puedes ver, el llamado se hace a un subdominio dentro del servidor de TheMovieDB, y la dirección apunta a: 3/ (la versión 3 de la API ) movie/ (hace el llamado a la pelicula), latest (la más reciente). Lo que viene después son llamados Parámetros y están relacionados al acceso que tienes como usuario a la API.

No es recomendado dejar la API con libre acceso a cualquier persona, puedes saturar el servidor con cientos o miles de peticiones de todo el mundo, por eso el servidor solo reconoce la petición cuando en uno de esos parámetros va el api_key de un usuario registrado en la página web de TheMovieDB.

Cuando el servidor reconoce la validez de la petición, va a la base de datos y busca la información que se le está solicitando. En este caso, el resultado es:

{
      "popularity": 2234.266,
      "vote_count": 182,
      "video": false,
      "poster_path": "/9HT9982bzgN5on1sLRmc1GMn6ZC.jpg",
      "id": 671039,
      "adult": false,
      "backdrop_path": "/gnf4Cb2rms69QbCnGFJyqwBWsxv.jpg",
      "original_language": "fr",
      "original_title": "Bronx",
      "genre_ids": [
        53,
        28,
        18,
        80
      ],
      "title": "Rogue City",
      "vote_average": 6.1,
      "overview": "Caught in the crosshairs of police corruption and Marseille's warring gangs, a loyal cop must protect his squad by taking matters into his own hands.",
      "release_date": "2020-10-30"
}

Esta información se encuentra en estado JSON y puede ser interpretada por cualquier aplicación de FrontEnd. Ya sea en Aplicaciones móviles o en aplicaciones web. El tratamiento de esta información en cada lenguaje es diferente, pero la API REST se encarga de entregar el mismo resultado a todos los que la soliciten.

Podría interesarte:  ¿Qué es JSON Web Token? (JWT)

Eso es todo por ahora, si necesitas saber más sobre esto, puedes dejarlo en los comentario, o si quieres que escriba sobre las diferencias entre el fontend y el backend, solo déjalo en los comentarios y lo haré lo antes posible. Hasta la próxima.