3.1 Módulo requests
Para trabajar con Internet en Python de manera básica, hay una biblioteca
llamada requests
. Ofrece una interfaz cómoda para
trabajar con la red, permitiendo enviar solicitudes HTTP y recibir respuestas con
un mínimo de esfuerzo.
Esta biblioteca no viene con Python, así que antes de usarla necesitas instalarla usando el gestor de paquetes.
Abre tu terminal y escribe:
pip install requests
Después de instalar la biblioteca, puedes usar el módulo requests
en
tus proyectos. Por ejemplo, así puedes determinar tu dirección IP externa:
import requests
response = requests.get("http://ip.jsontest.com/")
print(response.status_code) # Muestra el código de estado de la respuesta
print(response.json()) # Muestra la respuesta JSON
Aquí enviamos una solicitud al servicio (sitio) ip.jsontest.com
, que devuelve un objeto JSON con
la dirección IP desde la cual se hizo la solicitud. La solicitud y la obtención de la respuesta se realiza en una sola línea — es
muy conveniente. En las otras líneas simplemente imprimimos la respuesta del servidor.
En el ejemplo anterior, llamamos al método get()
; a continuación te hablaré de este método y de otros métodos del objeto
requests
.
3.2 Lista de métodos
El objeto requests
tiene métodos para todas las ocasiones, es decir, un método para cada tipo de solicitud HTTP.
Método | Descripción |
---|---|
requests.get()
|
Envía una solicitud GET para obtener datos del servidor. |
requests.post() |
Envía una solicitud POST para enviar datos al servidor. |
requests.put() |
Envía una solicitud PUT para actualizar datos en el servidor. |
requests.delete() |
Envía una solicitud DELETE para eliminar datos del servidor. |
requests.head() |
Envía una solicitud HEAD para obtener encabezados sin cuerpo de respuesta. |
requests.options() |
Envía una solicitud OPTIONS para obtener métodos y parámetros soportados por el servidor. |
requests.patch() |
Envía una solicitud PATCH para actualizar parcialmente datos en el servidor. |
requests.request() |
Método principal para enviar todo tipo de solicitudes HTTP . |
A continuación veremos las más básicas.
3.3 Envío de solicitud GET
y solicitud POST
Una solicitud GET
usualmente consiste solo en una URL, o puede contener una cadena adicional de parámetros.
1. Envío de una solicitud GET
pura
La solicitud GET
se usa para obtener datos del servidor. El parámetro obligatorio es la URL a la que se
envía la solicitud.
Ejemplo:
import requests
response = requests.get('https://jsonplaceholder.typicode.com/posts')
print(response.status_code) # Muestra el código de estado de la respuesta
print(response.json()) # Muestra la respuesta JSON
2. Envío de solicitud GET
con parámetros
También la URL puede contener parámetros adicionales en forma de cadena key=value&key2=value2&…
En nuestro caso, los parámetros se pasan en forma de diccionario y la variable params
:
import requests
params = {'userId': 1}
response = requests.get('https://jsonplaceholder.typicode.com/posts', params=params)
print(response.json())
3. Envío de solicitud POST
La solicitud POST
puede contener un cuerpo de solicitud: texto, JSON o incluso una imagen.
Ejemplo:
import requests
data = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)
print(response.status_code)
print(response.json())
3.4 Envío de solicitud PUT
y solicitud DELETE
1. Envío de solicitud PUT
La solicitud PUT
se usa para actualizar datos en el servidor.
import requests
data = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
response = requests.put('https://jsonplaceholder.typicode.com/posts/1', json=data)
print(response.status_code)
print(response.json())
2. Envío de solicitud DELETE
La solicitud DELETE
se usa para eliminar datos del servidor.
import requests
response = requests.delete('https://jsonplaceholder.typicode.com/posts/1')
print(response.status_code)
print(response.json())
Para entender mejor la esencia de las solicitudes GET
, POST
, PUT
y DELETE
, necesitas leer las lecciones sobre cómo funciona la red,
Internet, la web y HTTP
. Todo esto te espera en un futuro cercano.
GO TO FULL VERSION