Entrada

Python 馃悕 : Peticiones HTTP con M贸dulo Requests

Introducci贸n al M贸dulo requests en Python:
C贸mo Hacer Solicitudes HTTP de Forma Sencilla

En el mundo de la programaci贸n web, interactuar con APIs y servicios en l铆nea a menudo implica enviar solicitudes HTTP. Python, ofrece varias maneras de hacer esto, pero el m贸dulo requests es ampliamente reconocido por su simplicidad y potencia. En este art铆culo, exploraremos c贸mo usar el m贸dulo requests para realizar solicitudes HTTP en Python, cubriendo lo b谩sico y proporcionando ejemplos pr谩cticos para que puedas comenzar a usarlo en tus proyectos.

驴Qu茅 es el M贸dulo requests?

El m贸dulo requests es una biblioteca de Python que facilita la realizaci贸n de solicitudes HTTP. Proporciona una interfaz sencilla y legible para enviar solicitudes HTTP/1.1 y manejar respuestas, lo que simplifica significativamente la tarea de interactuar con servicios web y APIs.

Instalar Requests

Para comenzar a usar requests, primero debes instalarlo. Puedes hacerlo f谩cilmente usando pip, el gestor de paquetes de Python:

1
pip install requests

Hacer Solicitudes HTTP B谩sicas

El m贸dulo requests permite realizar diversos tipos de solicitudes HTTP.

A continuaci贸n se presenta un flujo que ilustra el proceso general de realizar solicitudes HTTP usando el m贸dulo requests en Python. Este flujo muestra los pasos clave, desde la preparaci贸n de la solicitud hasta el manejo de la respuesta.

graph TD
    A([Inicio]) --> B[Preparar Solicitud]
    B --> C{Tipo de Solicitud}
    
    C -->|GET| D[Realizar Solicitud GET]
    C -->|POST| E[Realizar Solicitud POST]
    C -->|PUT| F[Realizar Solicitud PUT]
    C -->|DELETE| G[Realizar Solicitud DELETE]
    
    D --> H[Recibir Respuesta]
    E --> H
    F --> H
    G --> H
    
    H --> I{驴Error?}
    
    I -->|S铆| J[Manejar Error]
    I -->|No| K[Procesar Datos de Respuesta]
    
    J --> L[Mostrar Mensaje de Error]
    K --> M[Mostrar Resultado]
    L --> N([Fin])
    M --> N

Ahora veremos algunos ejemplos b谩sicos.

1. Solicitud GET

La solicitud GET se utiliza para obtener datos de un servidor. Aqu铆 tienes un ejemplo de c贸mo hacer una solicitud GET para obtener datos de una API:

1
2
3
4
5
6
7
8
9
10
11
import requests

# URL del recurso
url = 'https://jsonplaceholder.typicode.com/posts/1'

# Realizar la solicitud GET
response = requests.get(url)

# Imprimir el contenido de la respuesta
print(response.status_code)  # C贸digo de estado HTTP
print(response.json())       # Contenido de la respuesta en formato JSON

En este ejemplo:

  • requests.get(url) realiza la solicitud GET a la URL proporcionada.
  • response.status_code muestra el c贸digo de estado HTTP (por ejemplo, 200 para 茅xito).
  • response.json() convierte el contenido de la respuesta en un objeto Python (si es JSON).

Cuando realizas solicitudes HTTP en Python utilizando el m贸dulo requests, a menudo la respuesta del servidor viene en formato JSON. El m贸dulo requests facilita el manejo de estas respuestas y te permite trabajar con datos JSON de manera sencilla.

Aqu铆 te muestro c贸mo formatear y trabajar con respuestas JSON en Python usando el m贸dulo requests.

1. Convertir la Respuesta a JSON

Si el c贸digo de estado indica 茅xito, puedes convertir la respuesta en formato JSON utilizando el m茅todo .json() del objeto de respuesta.

1
data = response.json()

2. Formatear el JSON para su Lectura

Para imprimir el JSON de manera legible, puedes usar el m贸dulo json de Python para formatear el contenido. Aqu铆 hay un ejemplo de c贸mo hacerlo:

1
2
3
4
5
6
7
8
import json

# Convertir la respuesta a JSON
data = response.json()

# Formatear el JSON
formatted_json = json.dumps(data, indent=4)
print(formatted_json)

En este ejemplo:

  • json.dumps() convierte el objeto Python a una cadena JSON.
  • El par谩metro indent=4 agrega sangr铆as para que el JSON sea m谩s legible.

Ahora, prueba el c贸digo completo que realiza una solicitud, verifica el estado, convierte la respuesta a JSON, y luego la formatea para su lectura:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import requests
import json

# URL del recurso
url = 'https://jsonplaceholder.typicode.com/posts/1'

# Realizar la solicitud GET
response = requests.get(url)

# Verificar el c贸digo de estado
if response.status_code == 200:
    print("Solicitud exitosa.")

    # Convertir la respuesta a JSON
    data = response.json()

    # Formatear el JSON para su lectura
    formatted_json = json.dumps(data, indent=4)
    print(formatted_json)
else:
    print(f"Error: {response.status_code}")

2. Solicitud POST

La solicitud POST se utiliza para enviar datos al servidor. Aqu铆 tienes un ejemplo de c贸mo enviar datos usando una solicitud POST:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import requests

# URL del recurso
url = 'https://jsonplaceholder.typicode.com/posts'

# Datos a enviar
data = {
    'title': 'foo',
    'body': 'bar',
    'userId': 1
}

# Realizar la solicitud POST
response = requests.post(url, json=data)

# Imprimir el contenido de la respuesta
print(response.status_code)
print(response.json())

En este ejemplo:

  • requests.post(url, json=data) realiza la solicitud POST con datos en formato JSON.
  • El servidor recibe los datos y responde con el resultado.

3. Solicitud PUT

La solicitud PUT se usa para actualizar un recurso existente. Aqu铆 tienes un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import requests

# URL del recurso
url = 'https://jsonplaceholder.typicode.com/posts/1'

# Datos a actualizar
data = {
    'title': 'foo updated',
    'body': 'bar updated',
    'userId': 1
}

# Realizar la solicitud PUT
response = requests.put(url, json=data)

# Imprimir el contenido de la respuesta
print(response.status_code)
print(response.json())

En este ejemplo:

  • requests.put(url, json=data) env铆a datos actualizados al servidor.

4. Solicitud DELETE

La solicitud DELETE se usa para eliminar un recurso:

1
2
3
4
5
6
7
8
9
10
import requests

# URL del recurso
url = 'https://jsonplaceholder.typicode.com/posts/1'

# Realizar la solicitud DELETE
response = requests.delete(url)

# Imprimir el c贸digo de estado
print(response.status_code)

En este ejemplo:

  • requests.delete(url) realiza la solicitud para eliminar el recurso en la URL proporcionada.

Manejo de Par谩metros y Encabezados

El m贸dulo requests permite agregar par谩metros y encabezados a tus solicitudes.

Par谩metros de Consulta

Para enviar par谩metros en la URL (como en una solicitud GET), puedes usar el argumento params:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import requests

# URL del recurso
url = 'https://jsonplaceholder.typicode.com/posts'

# Par谩metros de consulta
params = {
    'userId': 1
}

# Realizar la solicitud GET con par谩metros
response = requests.get(url, params=params)

# Imprimir el contenido de la respuesta
print(response.status_code)
print(response.json())

Encabezados

Puedes agregar encabezados personalizados a tus solicitudes usando el argumento headers:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import requests

# URL del recurso
url = 'https://jsonplaceholder.typicode.com/posts'

# Encabezados personalizados
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer tu_token_aqui'
}

# Realizar la solicitud GET con encabezados
response = requests.get(url, headers=headers)

# Imprimir el contenido de la respuesta
print(response.status_code)
print(response.json())

Manejo de Errores

El m贸dulo requests tambi茅n te permite manejar errores de manera efectiva. Puedes verificar si una solicitud fue exitosa utilizando response.raise_for_status():

1
2
3
4
5
6
7
8
9
import requests

try:
    response = requests.get('https://jsonplaceholder.typicode.com/invalid-url')
    response.raise_for_status()  # Lanza una excepci贸n para c贸digos de estado 4xx/5xx
except requests.exceptions.HTTPError as err:
    print(f'Error HTTP: {err}')
except Exception as err:
    print(f'Error: {err}')

En este ejemplo:

  • response.raise_for_status() lanza una excepci贸n si el c贸digo de estado HTTP indica un error.

El m贸dulo requests simplifica enormemente la interacci贸n con servicios web en Python, proporcionando una API f谩cil de usar para realizar solicitudes HTTP. Ya sea que necesites obtener datos, enviar informaci贸n, actualizar recursos o eliminar datos, requests facilita la tarea con una sintaxis intuitiva y potente.

Con los ejemplos y t茅cnicas descritos en este post, ahora tienes una base s贸lida para comenzar a utilizar requests en tus proyectos de Python.

隆Explora, experimenta y disfruta de aprender! 鉁岋笍

Esta entrada est谩 licenciada bajo CC BY 4.0 por el autor.