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)

Relacionado

15 Excelentes Libros GRATIS de Programación hechos por el creador de tutoriales de programación Flaviocopes (en inglés)

En los siguientes manuales vas a encontrar un gran contenido (en inglés) creado por @flaviocopes. Si te gustan sus contenidos, no dejes de visitar su página web flaviocopes.com, en la que Flavio publica un artículo en el que aprender algo nuevo cada día. Manual de Python. 2021 PDF, ePub, Mobi Manual para principiantes de React. 2020 PDF, ePub, Mobi Manual para principiantes de JavaScript. 2020 PDF, ¡SEGUIR LEYENDO!

15 Mejores Lenguajes de Programación que Aprender

Una de las habilidades más importantes para aprender en el mundo de hoy en día, es saber programar con un lenguaje de programación. En la actualidad, las computadoras han entrado en casi todas las industrias, desde el piloto automático de un avión hasta el velocímetro digital de una bicicleta pasando por la inclusión del Internet de las cosas en los pequeños electrodomésticos. Casi todo lo que ¡SEGUIR LEYENDO!

17 Nuevos Cursos Gratuitos de SQL, Python, Diseño Web y Más (06 de Marzo)

Regreso con nuevos cursos gratis, recuerda que algunos de los cupones de los cursos publicados ayer, es muy posible que aún sigan activos; y vas a poder encontrar cursos en español de javascript -typescript, react,vue- y Unity. Además, de cursos en inglés de Python, R, SQL y más; también tienes muchos cursos totalmente gratis y una gran oferta de guías para programación de O´Reilly (en inglés) ¡SEGUIR LEYENDO!

21 Nuevos Cursos Gratuitos: Python, Google Cloud, CSS y Más (25 de Febrero 2021)

Como de costumbre, vamos con los cursos gratis, tenemos 3 cursos en español: Computación, Google Cloud y aplicaciones web; y 18 cursos gratuitos en inglés: Python, Flask, Ionic, PHP, Android, Github, CSS, Flexbox, Illustrator, Photoshop, Scrum y minado de Sugar. Recuerda, que puedes si quieres, puedes acceder a las Mejores Ofertas de Udemy ¡Alé, aprendamos gratis un ratico! Cursos en Español Computación ? Curso Gratuito de ¡SEGUIR LEYENDO!

25 Mejores cursos de Udemy 2020 [EN]

Más de 20 expertos han compilado esta lista de los mejores cursos, certificados, tutoriales, capacitación y clases de Udemy disponibles en línea para 2020. Estos incluyen las mejores ofertas y descuentos para brindarte los mejores precios en oferta. Los cursos son adecuados para principiantes, estudiantes intermedios y expertos. Esta compilación ya ha ayudado a más de 72.000 estudiantes y se actualiza cada poco tiempo. Consulta nuestra ¡SEGUIR LEYENDO!

26 Nuevos Cursos GRATIS de Udemy: Python, Javascript, Flutter (cupón finalizado)

26 Nuevos cursos con cupones free de Udemy: En español (typescript,javascript, react, vue y videojuegos) e ingles (Python, Django, Javascript, R, SQL, Flutter, Java, Qt, Bootstrap, Illustrator y Photoshop). Cursos en Español ? Curso Gratis de Udemy: Aprende JavaScript y Jquery de 0 a 100 APÚNTATE ? Curso Gratis de Udemy: Aprende Typescript de 0 a 100 APÚNTATE ? Curso Gratis de Udemy: Aprende Vue + ¡SEGUIR LEYENDO!

40 Cursos Gratis de Udemy: Desarrollo Web, Python (cupón finalizado)

Recién llega la primavera y vamos con una publicación más, que incluye los cursos del Lunes; hoy tenemos, 9 cursos en español (Typescript, Javascript, React, Vue, Firebase, Swift, Azure, HTML y CSS, Power Bi). Más 31 cursos en inglés: Javascript, Typescript, React, Python, R, Java, Drupal, Android y Kotlin, Básicos de Visual Studio Code, Bootstrap, Gitlab, Maya 3D, Photoshop, Marketing en Facebook e Instagram, SEO. Iniciación ¡SEGUIR LEYENDO!