Ir al contenido

Python y API: cómo utilizar solicitudes de Python para crear aplicaciones basadas en API

¡Hola! ¿Está buscando mejorar sus habilidades con Python y aprender a integrar API potentes en sus aplicaciones? Entonces esta guía es para ti.

Voy a guiarte en el uso de la fantástica biblioteca Python Requests para interactuar con API web de todo tipo. Con algunos conocimientos básicos de Python y solicitudes, podrá:

  • Consultar datos desde cualquier punto final API
  • Cree aplicaciones que se integren con servicios populares como Twitter, Stripe, Twilio, etc.
  • Automatice los flujos de trabajo conectando API entre sí
  • Desbloquee toneladas de datos y funciones útiles para mejorar sus aplicaciones Python

Suena emocionante ¿verdad? ¡Vamos a sumergirnos!

¿Por qué utilizar API en Python?

Antes de entrar en el código, primero comprendamos porque conectarse a API es muy útil para los desarrolladores.

Las API permiten que diferentes aplicaciones de software se comuniquen entre sí. Las empresas y organizaciones exponen las API para permitir a los desarrolladores crear aplicaciones con sus servicios más fácilmente.

Estas son algunas de las principales razones para utilizar API en su código:

  • Ahorre tiempo – ¡No reconstruyas algo desde cero que ya existe como API!
  • Aprovechar los datos – Acceda a fuentes de datos útiles como el clima, las acciones, las redes sociales y más.
  • Ampliar la funcionalidad – Integra mapas, pagos, notificaciones y más.
  • Automatizar los flujos de trabajo – Conecte diferentes sistemas entre sí sin problemas.
  • Crea aplicaciones más rápido – Concéntrese en la lógica de su aplicación en lugar de en la infraestructura subyacente.

En resumen, las API bien diseñadas le ayudan a desarrollar mejores aplicaciones y más rápido.

Según la Informe sobre el estado de la API de Postman para 2024, la adopción de API públicas está creciendo rápidamente:

  • El 72% de las organizaciones consumen API públicas como parte de su negocio principal.
  • El 58% tiene API públicas.
  • Las solicitudes de API crecieron más del 650 % entre 2020 y 2021 para los socorristas.

Dado que las API son cada vez más omnipresentes en todas las industrias, es un buen momento para mejorar sus habilidades para conectarse a ellas con Python.

Comenzando con las solicitudes de Python

Python tiene bibliotecas fantásticas que facilitan el trabajo con API. El más popular es Solicitudes.

Requests le permite llamar a API con solo unas pocas líneas de código:

import requests

response = requests.get(‘https://api.data.gov/education‘)

Comparado con alternativas de nivel inferior como el integrado de Python urllib módulo, Solicitudes le ahorra un montón de tiempo y dolores de cabeza.

Algunas características clave de Solicitudes:

  • API simple y elegante
  • Hace que las solicitudes HTTP sean extremadamente fáciles
  • Compatibilidad con JSON integrada
  • Manejo de encabezados, parámetros, autenticación.
  • Reintentos automáticos ante errores de red
  • Amplia gama de funciones avanzadas

Para instalar Requests, simplemente ejecute:

pip install requests

Entonces import requests en su código y estará listo para comenzar a realizar llamadas API.

Veamos algunos ejemplos simples.

Hacer una solicitud GET

La llamada API más común es una solicitud GET para recuperar datos de un punto final.

A continuación se explica cómo realizar una solicitud GET con Solicitudes:

import requests 

response = requests.get(‘https://api.github.com/repos/requests/requests‘)

Esto enviará una solicitud GET al punto final de la API de GitHub para recuperar datos en el repositorio de Solicitudes.

volvemos un Response objeto que contiene el código de estado, encabezados de respuesta y datos.

Para imprimir el código de estado de respuesta:

print(response.status_code)

>>> 200

Un código de estado de 200 indica que nuestra solicitud fue exitosa. Existen muchos otros códigos de estado que indican errores o fallas; veremos cómo manejarlos más adelante.

Para acceder a los datos de respuesta, simplemente llame .json():

data = response.json()

print(data[‘stargazers_count‘])

>>> 64245

Los datos se analizan como JSON automáticamente. Esto hace que trabajar con API JSON sea muy sencillo.

Pasar parámetros

Para muchas API, es necesario pasar parámetros para filtrar datos, paginar resultados y más.

Pasar los parámetros como un diccionario al params argumento:

params = {‘type‘: ‘owner‘, ‘sort‘: ‘updated‘}
response = requests.get(‘https://api.github.com/repos/kennethreitz/requests‘, 
                        params=params)

Requests codifica los parámetros y los agrega a la URL por usted.

También puedes pasar parámetros directamente en la URL:

response = requests.get(‘https://api.github.com/repos/kennethreitz/requests?type=owner&sort=updated‘)

De cualquier manera funciona, pero pasar un diccionario se considera más limpio.

Solicitudes POST

Para crear recursos en el servidor, utilizaría una solicitud POST.

Pase los datos para publicar como diccionario al json parámetro:

data = {‘name‘: ‘John Smith‘, ‘email‘: ‘[email protected]‘}
response = requests.post(‘https://api.example.com/users‘, json=data)

Esto codifica los datos como JSON y envía una POST a la API para crear un nuevo recurso de usuario.

Para los POST también debes validar el código de estado devuelto:

if response.status_code == 201:
  print(‘User created!‘)

El estado 201 significa que el recurso se creó correctamente en el servidor.

PONER, PARCHEAR, BORRAR

Además de GET y POST, los otros métodos HTTP comunes son:

  • PUT – Actualizar un recurso existente
  • PARCHE – Actualización parcial de un recurso
  • BORRAR – Eliminar un recurso

Estos funcionan de manera similar, simplemente llame al método correspondiente en requests:

# PUT - Update user
requests.put(‘https://api.example.com/users/123‘, json=updated_data) 

# PATCH - Partial update  
requests.patch(‘https://api.example.com/users/123‘, json=partial_data)

# DELETE - Delete user
requests.delete(‘https://api.example.com/users/123‘)

¡Ahora ya sabes cómo realizar llamadas API utilizando todos los métodos HTTP comunes!

Manejo de respuestas API

Cuando trabaja con API, debe manejar los datos de respuesta en función del código de estado devuelto por el servidor.

Las API utilizan códigos de estado HTTP estándar para indicar éxito, errores o fallas. Algunos comunes incluyen:

  • 200 – OK – La solicitud fue exitosa
  • 201 – Creado – El recurso se creó exitosamente
  • 400 – Solicitud incorrecta: la solicitud tenía un formato incorrecto o faltaban datos
  • 401 – No autorizado – Se requiere autenticación
  • 403 – Prohibido – No tienes acceso a este recurso
  • 404 – No encontrado – El recurso no existe
  • 500 – Error del servidor – El servidor encontró un error inesperado

Verifica el código de estado en el objeto Respuesta:

response = requests.get(‘https://api.example.com/items/123‘)

if response.status_code == 200:
  # Success!
elif response.status_code == 404:
  # Notify user item does not exist

Para ser conciso, recomiendo envolver todas sus llamadas de Solicitudes en una función auxiliar como:

def make_api_request(endpoint):
  response = requests.get(endpoint)

  response.raise_for_status()

  return response.json()

Esto hace que el código sea más limpio, además de centralizar el manejo de errores en un solo lugar.

raise_for_status() generará una excepción si hay un código de error HTTP como 500 o 404, lo que le evitará comprobarlo manualmente cada vez.

Autenticación con API

Muchas API requieren autenticación para restringir el acceso. Algunas formas comunes de autenticación API incluyen:

  • Claves API – Pasar una clave API única a través de un encabezado o parámetro de solicitud
  • Autenticación básica – Pasar un nombre de usuario y contraseña con la solicitud.
  • fichas de portador – Enviar un token de portador OAuth 2.0 desde el proveedor de autenticación
  • autenticación de resumen – Similar a la autenticación básica pero las credenciales están cifradas

Las solicitudes simplifican el manejo de la autenticación.

Para usar una clave API, pásala como encabezado:

headers = {‘Authorization‘: ‘Bearer YOUR_API_KEY‘}
response = requests.get(‘https://api.example.com‘, headers=headers)

Para autenticación básica, proporcione el nombre de usuario y la contraseña como una tupla:

requests.get(‘https://api.example.com‘, 
            auth=(‘username‘, ‘password‘))

Las solicitudes se encargarán de codificar sus credenciales correctamente.

Para tokens al portador de proveedores de OAuth como Facebook, Twitter, Google, etc.:

params = {‘access_token‘: ‘OAUTH_TOKEN‘}
requests.get(‘https://api.example.com‘, params=params)  

Pase el token de acceso como parámetro y Requests se encargará del resto.

La autenticación adecuada es fundamental para acceder de forma segura a las API en sus aplicaciones y flujos de trabajo de Python.

Mejores prácticas para trabajar con API

Ahora que sabes cómo Para llamar a las API con Python, analicemos algunas de las mejores prácticas para trabajar eficazmente con ellas:

Manejar errores con gracia

Las API pueden fallar de maneras inesperadas: los servidores fallan, las redes fallan, los proveedores realizan cambios.

Al realizar solicitudes de API:

  • Utilice bloques try/except para detectar errores
  • Manejar excepciones comunes como ConnectionErrors
  • Verifique los códigos de estado y maneje respuestas que no sean 200
  • Utilice una estrategia de retroceso exponencial para reintentar solicitudes fallidas

Esto garantiza que su aplicación se degrade correctamente cuando fallan las API.

Respetar los límites de tarifas

Para evitar abusos, las API imponen límites de velocidad en las solicitudes por hora/día.

Superar estos límites bloqueará su acceso, posiblemente de forma permanente.

Para evitar esto:

  • Revisar la documentación del límite de tasa y entender tu cuota
  • Limitar solicitudes – sólo hacer llamadas cuando sea necesario
  • Implementar un temporizador de retroceso si alcanza el límite para hacer una pausa antes de volver a intentarlo
  • ¡Nunca envíe spam ni abuse de la API! Esto provocará bloqueos.

Los límites de tarifas protegen las API para que funcionen para todos los usuarios. Respétalos en tu uso.

Respuestas de caché

Las API pueden ser lentas dependiendo de la conectividad. Para mejorar el rendimiento, considere almacenar en caché las respuestas, especialmente si los datos no cambian con frecuencia.

Las bibliotecas de almacenamiento en caché de Python más populares incluyen Redis, Memcached y SQLAlchemy.

El almacenamiento en caché evita llamadas de red innecesarias para solicitudes repetidas.

Ejemplos y usos de la API de Python

Ahora veamos algunos ejemplos del mundo real de API populares y cómo acceder a ellas en Python.

API de Twitter

La API de Twitter permite consultar tweets, usuarios, hashtags y análisis. Debe solicitar una cuenta de desarrollador de Twitter para obtener las credenciales de API.

Instale la lloriqueo biblioteca para una interfaz API de Twitter más amigable:

pip install tweepy

Ejemplo de búsqueda de tweets para un hashtag:

import tweepy

client = tweepy.Client(bearer_token=TWITTER_TOKEN)

tweets = client.search_recent_tweets(query="#python")

for tweet in tweets.data:
   print(tweet.text)

Consulte las documentos chirriantes para más información.

API de GitHub

La API de GitHub permite el acceso programático a repositorios, códigos, usuarios y más de GitHub sin autenticación.

Ejemplo de obtención de los repositorios de un usuario:

import requests

response = requests.get(‘https://api.github.com/users/kennethreitz/repos‘)

for repo in response.json():
  print(repo[‘name‘]) 

Consulte las Documentos de la API de GitHub para más casos de uso.

API Stripe

La API de Stripe permite integrar pagos en aplicaciones y sitios web.

Instale la raya biblioteca e importación:

pip install stripe

import stripe

Ejemplo de creación de un cargo:

stripe.api_key = ‘STRIPE_SECRET_KEY‘ 

charge = stripe.Charge.create(
  amount=1000,
  currency=‘usd‘,
  source=‘tok_visa‘ # Token from Stripe.js
)

Stripe se encarga del trabajo pesado de los pagos por ti.

See Documentos API de Stripe para obtener la referencia completa de API.

¡Existen muchas otras API excelentes como Slack, Twilio, Google Maps, AWS y más! La clave es encontrar la fuente de datos adecuada para su aplicación y aprovechar el poder de las API.

Conclusión

Espero que esta guía haya proporcionado una descripción general útil sobre cómo realizar solicitudes de API en Python utilizando la biblioteca de solicitudes. Aquí hay algunas conclusiones clave:

  • Solicitudes simplifica las llamadas a las API: instálalas usando pip
  • Utilice métodos HTTP comunes como GET, POST, PUT, DELETE para operaciones CRUD
  • Pase parámetros, autenticación, encabezados y datos fácilmente
  • Manejar correctamente los códigos de estado y los errores
  • Implementar mejores prácticas como limitación de velocidad y almacenamiento en caché
  • ¡Integre API geniales como Twitter, GitHub, Stripe y más!

Las API lo ayudan a crear mejores aplicaciones más rápidamente al permitirle aprovechar los datos y servicios existentes. Python y Requests brindan una excelente manera de desbloquear el poder de las API en su código.

Para los próximos pasos, recomiendo navegar por el sitio oficial. Solicita documentos, leyendo los documentos API de cualquier servicio que desee integrar y revisando algunos repositorios que utilizan API de Python como esta.

¡Espero que esta guía te haya resultado útil! Déjame saber si tienes alguna otra pregunta sobre el uso de Python y las API. ¡Feliz codificación!

Únase a la conversación

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *