¿Qué es el módulo de solicitudes de Python?

El módulo de “solicitudes” de Python realiza solicitudes HTTP a servicios web o API. Proporciona una forma sencilla y cómoda de enviar solicitudes HTTP y gestionar respuestas, lo que facilita la interacción con los servicios web que utilizar la biblioteca urllib integrada.

El módulo de solicitudes le permite enviar solicitudes HTTP/1.1 con excepcional facilidad. No es necesario agregar manualmente cadenas de consulta a sus URL ni codificar sus datos PUT y POST, pero hoy en día, ¡solo use el método json!

Descargue e instale el módulo de solicitudes

Para comenzar con la biblioteca de solicitudes, primero debe instalarla, ya que no está incluida en la biblioteca estándar de Python:

python -m pip install requests

Sintaxis

requests.methodname(params)

Creando una solicitud

# Importing the requests module
import requests

# Defining the URL for the request
url = 'https://api.example.com/data'

# Sending a GET request to the specified URL
response = requests.get(url)

# Checking if the request was successful (HTTP status code 200)
if response.status_code == 200:
  # Printing the response content as text
  print(response.text)
else:
  print(f'Request failed with status code {response.status_code}')

Además, para OBTENER solicitudes, el módulo de solicitudes admite otros métodos HTTP como POST, PUT, DELETE y más:

# Sending a POST request with JSON data

data = {'key': 'value'}
headers = {'Content-Type': 'application/json'}
response = requests.post(url, json=data, headers=headers)

Métodos de solicitud

El módulo de solicitudes proporciona muchas otras funciones, como manejar tiempos de espera, administrar cookies, manejar redirecciones y más.

Method Description
delete(url, args) Envía una solicitud DELETE a la URL especificada
get(url, params, args) Envía una solicitud GET a la URL especificada
head(url, args) Envía una solicitud HEAD a la URL especificada
patch(url, data, args) Envía una solicitud PATCH a la URL especificada
post(url, data, json, args) Envía una solicitud POST a la URL especificada
put(url, data, args) Envía una solicitud PUT a la URL especificada
request(method, url, args) Envía una solicitud del método especificado a la URL especificada

Objeto de respuesta

Estos son los principales atributos y métodos del objeto Respuesta:

  1. .text: el contenido de la respuesta se decodifica como una cadena utilizando la codificación de caracteres especificada por los encabezados de la respuesta (o UTF-8 si no se especifica Ninguno).
  2. .content: el contenido de la respuesta sin procesar en bytes.
  3. .status_code: el código de estado HTTP devuelto por el servidor.
  4. .headers: un objeto similar a un diccionario que contiene los encabezados de respuesta.
  5. .cookies: un objeto RequestsCookieJar que representa las cookies establecidas o devueltas en la respuesta.
  6. .url: La URL de la respuesta.
  7. .encoding: la codificación de caracteres utilizada para decodificar el contenido de la respuesta para producir el atributo .text. Se puede configurar manualmente para cambiar la codificación.
  8. .reason: la frase de motivo HTTP devuelta por el servidor (por ejemplo, “OK” para un código de estado 200).
  9. .elapsed: objeto timedelta que representa el tiempo necesario para completar la solicitud.

Autenticación mediante solicitudes de Python

La autenticación es un aspecto crucial de muchos servicios web. La biblioteca de solicitudes en Python proporciona mecanismos integrados para manejar varios tipos de autenticación.

Autenticación básica

Basic Authentication requires a username and password. It sends the credentials as a Base64-encoded string in the request headers.

import requests
from requests.auth import HTTPBasicAuth

response = requests.get('https://api.example.com/data', 
                          auth=HTTPBasicAuth('username', 'password'))

# Alternatively, you can use shorthand:
response = requests.get('https://api.example.com/data', auth=('username', 'password'))

Autenticación implícita

La autenticación implícita es un mecanismo de desafío-respuesta que es más seguro que la autenticación básica.

from requests.auth import HTTPDigestAuth

response = requests.get('https://api.example.com/data', 
                         auth=HTTPDigestAuth('username', 'password'))

Autenticación de token de portador (por ejemplo, OAuth2.0)

Para API que requieren autenticación basada en tokens, como OAuth2.0:

import requests

headers = {
  'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}

response = requests.get('https://api.example.com/data', headers=headers)

Verificación de certificación SSL

En el contexto de la biblioteca de solicitudes en Python, la verificación del certificado SSL está habilitada de forma predeterminada para todas las solicitudes HTTPS. Esta es una característica de seguridad para evitar posibles ataques de intermediarios.

Comportamiento en solicitudes:

Comportamiento por defecto

De forma predeterminada, las solicitudes verificarán el certificado SSL del servidor.

La solicitud generalmente procede si el certificado es válido y está emitido por una autoridad certificadora (CA) confiable. Si el certificado no es válido, está autofirmado, ha caducado o ha sido emitido por una CA que no es de confianza, las solicitudes generarán un SSLError.

Deshabilitar la verificación

Para el desarrollo o al conectarse a un servidor con un certificado autofirmado, es posible que desee deshabilitar la verificación del certificado. Sin embargo, esto no se recomienda para uso en producción.

response = requests.get('https://example.com', verify=False)

Para suprimir esta advertencia (aunque no se recomienda), puede hacer lo siguiente:

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

Objetos de sesión

En la biblioteca de solicitudes, un objeto de sesión permite conservar parámetros específicos en todas las solicitudes.

Esto puede resultar especialmente útil cuando realizas varias solicitudes al mismo servidor y desea reutilizar atributos específicos como encabezados, cookies, servidores proxy o detalles de autenticación.

El uso de una sesión también puede mejorar el rendimiento, ya que puede reutilizar la conexión TCP subyacente para múltiples solicitudes al mismo host en lugar de crear una nueva conexión para cada solicitud.

En resumen, si realiza varias solicitudes al mismo servidor o requiere que atributos específicos persistan en todas las solicitudes, el uso de un objeto Session puede simplificar su código y mejorar el rendimiento.

import requests

s = requests.Session()

s.get('https://httpbin.org/cookies/set/sessioncookie/123456789')

op = s.get('https://httpbin.org/cookies')

print(op.text)

Artículos Relacionados
GitHub Super Linterna: Una linterna para gobernarlas a todas

Configurar un nuevo repositorio con todas las linternas correctas para los diferentes tipos de código puede llevar mucho tiempo y ser tedioso. Se necesitan tantas herramientas y configuraciones que a menudo se requieren más de un lintera para cubrir todos los idiomas utilizados dentro ¡SEGUIR LEYENDO!

¿Cómo aprender Git y Github desde cero?

Esta página está destinada a recopilar los mejores artículos sobre aprender a utilizar de mejor forma los diferentes sistemas de control de versiones; como por ejemplo, todos los proyectos que se basan en las tecnologías Git. ? Libros de Git y Github / ? ¡SEGUIR LEYENDO!

¿Cómo convertirse en un mejor programador?

Para los principiantes, esta lista les puede ser bastante relevante, en el caso de que seas un programador experto; no tanto. Aunque los programadores experimentados aún pueden aprender mucho porque la mayoría de estos consejos se basan en conocimientos prácticos. Dado que la programación ¡SEGUIR LEYENDO!