¿Qué es una API y cómo se usa?

Una API es el middleware que se encuentra entre dos aplicaciones y permite comunicarse mediante reglas predefinidas.

En la práctica, las API generalmente se usan para permitir que las aplicaciones del lado del cliente accedan a una base de datos protegida de otro modo.

¿Qué hacen las API?

En un nivel alto, las API simplemente establecen comunicación entre dos aplicaciones.

No pueden comunicarse directamente, ya que no tienen acceso al código del otro, por lo que tienen que tender un cable entre ellos y enviar señales por línea. La API define cómo se deben enviar esas señales.

Casi todas las aplicaciones que se ejecutan en tu computadora usan una API de algún tipo para comunicarse con miles de otras cosas.

En la práctica, el término “API” se usa comúnmente para referirse a las API basadas en la web que forman el vínculo entre el servidor y el cliente o entre el servidor y un servicio de back-end.

Estas API actúan como punto de acceso para cualquier servicio que esté detrás de ellas.

Por ejemplo, imagina que tienes una aplicación del lado del cliente que necesita comunicarse con un servidor con una base de datos. Obviamente, no puedes otorgar al cliente acceso completo a la base de datos, ya que eso presenta una serie de problemas.

En primer lugar, es probablemente el peor error de seguridad que podrías cometer; pero además de eso, también rompe todo el modelo cliente-servidor.

El cliente no debería tener que preocuparse por hablar con una base de datos o almacenar datos, debe comunicarse con el servidor y dejar que el servidor haga el trabajo pesado.

En lugar de permitir el acceso total del cliente, se puede crear otro servicio que se comunique con la base de datos en nombre del cliente. Esa es la aplicación API y que se encuentra directamente frente a la base de datos (o cualquier otro servicio que esté detrás).

El cliente envía solicitudes a la aplicación de la API, generalmente a través de solicitudes HTTP: GET o POST.

Eso puede ser una URL en tu servidor, como por ejemplo “ api.misitio.com.”

Si el cliente quisiera buscar en la base de datos con una consulta específica, la API pediría a la base de datos que realice la búsqueda y luego devuelve los resultados.

Por lo general, las API se comunican a través de JSON, que devuelven los resultados como un objeto con tipos estrictamente definidos, por ejemplo:

{
  "name": "MyAPI",
  "search_results": [...]
}

Este es otro beneficio de las API: Estandarizar la estructura de los datos.

Una API siempre debe devolver el mismo formato y tipo de datos cada vez, lo que facilita su uso en diferentes aplicaciones.

La mayoría de las principales empresas de tecnología tienen APIs disponibles públicamente y una extensa documentación sobre la estructura y cómo se usa su API.

¿Cómo usar una API?

Las API están bastante estandarizadas. Casi siempre serán accesibles a través de HTTP y por lo general, devuelven datos JSON, lo que significa que cualquier lenguaje de programación que pueda realizar solicitudes HTTP y decodificar JSON puede comunicarse con la API y obtener datos de ella.

Incluso algo tan simple como curl o wget que son capaces de descargar contenido basado en la web, pueden acceder a una API.

Puedes hacer uso de las API disponibles públicamente en cualquier aplicación que desees, aunque a veces tienen una tasa limitada para evitar el abuso.

Por ejemplo, KeyCDN ejecuta una API para obtener información de ubicación de una dirección API, pero está limitado a tres solicitudes por segundo.

Puede usar esto en cualquier aplicación realizando una solicitud HTTP GET al extremo de la API con la dirección IP pasada como un parámetro de URL.

Por ejemplo:

https://tools.keycdn.com/geo.json?host={IP_ADDRESS}

Lo que devolvería algo como:

{
  "status": "success",
  "description": "Data successfully received.",
  "data": {
    "geo": {
      "host": "173.79.254.254",
      "ip": "173.79.254.254",
      "rdns": "pool-173-79-254-254.washdc.fios.verizon.net",
      "asn": 701,
      "isp": "MCI Communications Services, Inc. d/b/a Verizon Business",
      "country_name": "United States",
      "country_code": "US",
      "region_name": "Virginia",
      "region_code": "VA",
      "city": "Alexandria",
      "postal_code": "22309",
      "continent_name": "North America",
      "continent_code": "NA",
      "latitude": 38.719,
      "longitude": -77.1067,
      "metro_code": 511,
      "timezone": "America/New_York",
      "datetime": "2019-08-22 17:30:48"
    }
  }
}

Puedes almacenar este resultado en una variable llamada response. Luego, si quisieras saber el código postal de la dirección, podrías acceder usando response.data.geo.postal_code.

Existen bibliotecas para la mayoría de los idiomas que facilitan este proceso y muchos idiomas también incluyen herramientas integradas para trabajar conjunto a las APIs.

A continuación, te muestro algunos de los lenguajes más comunes, pero una búsqueda rápida de “Solicitud -lenguaje favorito aquí- HTTP” debería mostrar resultados para el idioma con el que estés trabajando.

JavaScript

JavaScript puede hacer solicitudes HTTP listas, usando el objeto XMLHttpRequest():

const Http = new XMLHttpRequest();
const url='https://api.github.com/';
Http.open("GET", url);
Http.send();

Http.onreadystatechange = (e) => {
  console.log(Http.responseText)
}

Sin embargo, esta sintaxis es bastante torpe por lo que comúnmente se maneja con otras bibliotecas, a menos que necesites estrictamente Vanilla JS.

Por ejemplo, jQuery tiene el método ajax que se encarga de ello:

$.ajax('https://api.github.com/', {
    dataType: 'json',
    success: function (data, status, xhr) { ... }
});

También está la biblioteca de axios biblioteca que es capaz de manejarlo mediante “promesas”:

axios.get('https://api.github.com/')
  .then((data) => {
    console.log(data);
  }
)

En cualquier caso, los objetos JSON pueden deserializarse directamente a objetos JavaScript usando JSON.parse() lo que le permite almacenar los resultados para usarlos en otro lugar.

PHP

PHP puede realizar solicitudes GET de forma nativa mediante el uso de la funciónfile_get_contents que se puede utilizar con json_decode para leer el resultado de la API en una variable:

$json = file_get_contents('https://api.github.com/');
$obj = json_decode($json);

Si deseas realizar una solicitud POST o necesitas una configuración adicional, puedes crear un contexto especial para file_get_contents usando stream_context_create:

$url ='https://api.github.com/';
$data = 'something';

$options = array(
  'http' => array(
    'header' => "Content-type: application/x-www-form-urlencodedrn",
    'method' => 'POST',
    'content' => http_build_query($data)
  )
);

$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { //error }

Python

Python no tiene una excelente manera de hacer esto de forma nativa, por lo que deberás instalar la biblioteca de solicitudes desde pip.

Después de eso, vas a poder hacer solicitudes como esta:

import requests
r = requests.get("https://api.github.com/")

Esto devolverá un objeto que representa la transacción HTTP completa, por lo que para obtener el contenido real tendrá que usar r.content.

Es probable que también necesites la biblioteca JSON para decodificar la respuesta en un objeto legible por Python.

import json
import requests
r = requests.get("https://api.github.com/")
decoded = json.loads(r.content)

¿Cómo crear mi propia API web?

Si tienes algunos datos que te gustaría que estén disponibles, puedes colocar una API delante de ellos para acceder a ellos a través de Internet.

Si quieres hacer eso, debes crear un servidor API.

El único requisito para ello es que puedas escuchar a través de HTTP y responder a las solicitudes, por lo que puedes usar cualquier lenguaje de programación que desees.

Es probable que también necesites una biblioteca para conectarte a la base de datos de tu elección desde el lenguaje de programación usado y también, sería recomendable implementar algún tipo de autenticación como OAuth 2.0 para poder realizar un seguimiento de los usuarios y sus permisos.

Express es una biblioteca de Node.JS comúnmente utilizada para crear API web simples mediante JavaScript.

El servidor Express escucha a través de HTTP y puede reenviar diferentes rutas a las funciones del controlador.

Se puede usar junto con un cliente Node MySQL (o cualquier otra base de datos) para crear API ricas en datos.

Para Python, también necesitarás un framework web como Flask u similar, capaz de poder escuchar y responder a las solicitudes HTTP.


Artículos Relacionados
Shopify invierte en realizar investigaciones sobre Ruby a escala

Shopify continúa invirtiendo en Ruby on Rails a escala, financiando a académicos de alto perfil para lograr enfocar su trabajo hacia el estudio de Ruby y las necesidades de la comunidad de Ruby. Durante el año pasado, Shopify entregó casi medio millón de dólares ¡SEGUIR LEYENDO!

5 Mejores cursos de Vue (framework Javascript) en Coursera

Escribe una aplicación web de índice universitario con VueJS de Coursera Project Network Crea una aplicación web con Vue.js de Coursera Project Network Crear una vista previa de enlace web con componentes VueJS de Coursera Project Network Empezando a trabajar con VueJS de Coursera ¡SEGUIR LEYENDO!

Meta da preferencia a Kotlin y desplaza a Java

Meta, la empresa matriz de Facebook, se encuentra en estos momentos procesando la transición del código Java que alimenta su aplicación para Android al lenguaje de Kotlin[, un lenguaje de programación más reciente y que se ejecuta sobre Java Virtual Machine (JVM). JetBrains, un ¡SEGUIR LEYENDO!

Deja un comentario