Guía Completa sobre la Biblioteca `requests` en Python

La biblioteca requests es una de las herramientas más populares en el ecosistema de Python para realizar solicitudes HTTP. Con un diseño simple y elegante, requests permite a los desarrolladores interactuar con APIs y realizar peticiones web de una manera muy sencilla. En esta guía, exploraremos cómo utilizar esta poderosa biblioteca, sus funciones básicas, y algunos consejos útiles para sacarle el máximo provecho.

¿Qué es la biblioteca requests?

requests es una biblioteca de Python que permite enviar solicitudes HTTP de forma sencilla y efectiva. Con ella, puedes realizar operaciones como GET, POST, PUT, DELETE, y muchas más con solo unas pocas líneas de código. Esta biblioteca abstrae los detalles complejos del protocolo HTTP, lo que facilita la interacción con servicios web.

Instalación de requests

Antes de comenzar a utilizar requests, primero necesitas instalarlo. Esto se puede hacer fácilmente utilizando pip:

pip install requests

Realizando una solicitud GET

La forma más básica de utilizar requests es realizar una solicitud GET. A continuación, te mostramos cómo hacerlo.

Ejemplo básico

Aquí tienes un ejemplo de cómo realizar una solicitud GET a una API pública:

import requests

response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
data = response.json()  # Parsear la respuesta JSON
print(data)

En este ejemplo, hacemos una solicitud a una API que devuelve un post en formato JSON. Usamos response.json() para convertir la respuesta en un diccionario de Python.

Realizando una solicitud POST

Además de GET, requests permite realizar solicitudes POST, que a menudo se utilizan para enviar datos a un servidor.

Ejemplo de POST

import requests

url = "https://jsonplaceholder.typicode.com/posts"
payload = {"title": "foo", "body": "bar", "userId": 1}

response = requests.post(url, json=payload)
data = response.json()
print(data)

Aquí estamos enviando un nuevo post a la API en formato JSON. requests automágicamente configura el header Content-Type a application/json.

Manejo de errores

Es importante manejar errores adecuadamente al realizar solicitudes HTTP. requests proporciona varios métodos para verificar el estado de la respuesta.

Comprobando el código de estado

if response.status_code == 200:
    print("Éxito:", data)
else:
    print("Error:", response.status_code)

Además de verificar el código de estado, podemos usar raise_for_status() que lanzará una excepción si la solicitud no fue exitosa:

try:
    response.raise_for_status()
    data = response.json()
except requests.exceptions.HTTPError as e:
    print(f"Error en la solicitud: {e}")

Enviando parámetros en la URL

A menudo, es necesario enviar parámetros en la URL. Esto se puede hacer utilizando el argumento params.

Ejemplo de parámetros

url = "https://jsonplaceholder.typicode.com/posts"
params = {"userId": 1}

response = requests.get(url, params=params)
data = response.json()
print(data)

Trabajo con headers

Usar headers personalizados es otra característica poderosa de requests. Puedes especificar headers HTTP de la siguiente manera:

Ejemplo de headers personalizados

headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)

Conclusión

La biblioteca requests es una herramienta esencial para cualquier desarrollador de Python que necesite interactuar con servicios web. Su diseño intuitivo y la capacidad de realizar conexiones HTTP de manera sencilla la convierten en una opción preferida en el mundo del desarrollo. Con lo que hemos cubierto en esta guía, ya deberías estar equipado para comenzar a utilizar requests en tus proyectos.

Tips Adicionales

  • Aprovecha la documentación oficial de requests: Requests Documentation
  • Asegúrate de manejar adecuadamente las excepciones y errores para hacer tu código más robusto.
  • Utiliza herramientas como Postman para probar tus APIs antes de implementarlas en tu código Python.

Ya estás listo para comenzar a utilizar la biblioteca requests en tus proyectos de Python. ¡Feliz programación!