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

Una API (Interfaz de Programación de Aplicaciones) es un conjunto de reglas y protocolos que permiten que dos aplicaciones o componentes de software diferentes se comuniquen entre sí y compartan datos o funcionalidades.

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.

¿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ón file_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)
### ¿Qué Elemtos Componen una API?
Las API se componen de elementos clave:
1. **Endpoints:** Son los puntos de acceso específicos dentro de la API a los que se pueden realizar solicitudes. Cada endpoint corresponde a una operación o recurso particular.
2. **Métodos HTTP:** Las solicitudes a una API suelen utilizar métodos HTTP estándar, como GET (para obtener datos), POST (para enviar datos nuevos), PUT (para actualizar datos existentes) y DELETE (para eliminar datos).
3. **Formato de datos:** Las API especifican cómo se deben estructurar los datos en las solicitudes y respuestas. Los formatos comunes incluyen JSON (JavaScript Object Notation) y XML (Extensible Markup Language).
4. **Autenticación y autorización:** Las API pueden requerir autenticación para garantizar que solo usuarios autorizados puedan acceder a ellas. Esto se logra a menudo mediante tokens, claves API u otros métodos de autenticación.
5. **Documentación:** Las API suelen estar acompañadas de documentación detallada que describe cómo usarlas, qué endpoints están disponibles, qué datos se esperan y cómo interpretar las respuestas.
6. **Versionado:** Para garantizar la compatibilidad a lo largo del tiempo, las API suelen versionarse, lo que significa que se mantienen versiones anteriores de la API para que las aplicaciones existentes no se rompan cuando se realizan cambios en la API.
### ¿Qué Funcionamiento tiene una 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](https://developer.github.com/v3/) y una extensa documentación sobre la estructura y cómo se usa su API.

¿Cómo Puedes Crear tu 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.


Relacionados

: Repositorio de APIs gratuitas

Relacionado

Repositorio de API´s gratuitas para su usar en proyectos de software y desarrollo web

Una lista colectiva de API gratuitas para usar en software y desarrollo web. Animales ENLACE DESCRIPCIÓN AUTORIZACIÓN HTTPS CORE Datos del gato Hechos diarios de gatos No sí Desconocido gatos Fotos de gatos de Tumblr apiKey sí Desconocido Perros Basado en el conjunto de datos de perros de Stanford No sí sí HTTPCat Cat para cada estado HTTP No sí Desconocido UICN Lista Roja de Especies ¡SEGUIR LEYENDO!

Microsoft lanza el Framework .NET 6 Previa 2

Microsoft lanza el framework .NET 6 Preview 2. La nueva versión previa incluye nuevas API, mejoras de rendimiento en tiempo de ejecución y versiones iniciales de .NET MAUI. Además, se incluyen compilaciones para Apple Silicon, que faltaban para la versión previa preliminar 1. Después del anuncio de la versión general de .NET 6, en Microsoft, vuelven a lanzar vistas previas mensuales programadas regularmente hasta la versión ¡SEGUIR LEYENDO!

Mejores Proyectos de Github para Desarrolladores Web por Iain Freestone (Julio)

En estos recopilatorios, voy a publicar los mejores proyectos de Github enfocados al desarrollo web y que son tendencia en los últimos días. Los agradecimientos de estos recopilatorios, puedes dejárselos a Ian Freestone que es el encargado de hacer tanto y tan buen trabajo, ¡Gracias por tanto Ian! ??? Además puedes suscribirte a su lista de correos semanal, seguirle a través de su página web (https://iainfreestone.com/) ¡SEGUIR LEYENDO!

Los Mejores Ofertas de Cursos Udemy

Ciberninjas comparte todos los cursos gratuitos que aparecen en Udemy a lo largo de todo el año y también a compartir las mejores ofertas de Udemy. ¿En serio, te vas a resistir a venir a aprender? A continuación, te queda un amplio listado de algunos de los cursos de programación en español mejor valorados impartidos por los mejores profesionales de Udemy. Si quieres seguir los nuevos ¡SEGUIR LEYENDO!

Karate: Automatización de pruebas simples

Karate es la única herramienta de código abierto que combina la automatización de pruebas de API, simulaciones, pruebas de rendimiento e incluso la automatización de la interfaz de usuario en un marco único y unificado. La sintaxis BDD popularizada por Cucumber es un lenguaje neutro y fácil incluso para los no programadores. Se incorporan poderosas afirmaciones JSON y XML, y puede ejecutar pruebas en paralelo para ¡SEGUIR LEYENDO!

Deja un comentario