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 solicitudGET
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 solicitudPOST
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! 鉁岋笍