requests — Cliente HTTP#

El módulo requests proporciona una API mínima de cliente HTTP/HTTPS similar a la biblioteca Python requests. Cada función de petición devuelve un objeto requests.Response.

Ejemplo:

import requests

# GET a JSON resource.
r = requests.get("https://httpbin.org/get")
print(r.status_code, r.reason)
print(r.json())

# POST JSON.
r = requests.post(
    "https://httpbin.org/post",
    json={"id": 1, "value": 42},
    headers={"X-Source": "openmv"},
)
print(r.json())

Clase Response#

class requests.Response(code: int, reason: str, headers: bytes = None, content: bytes = None)#

Representa una respuesta HTTP. Las instancias son devueltas por requests.request y por los ayudantes por método.

status_code: int#

Código de estado HTTP entero devuelto por el servidor.

reason: str#

Frase de motivo devuelta por el servidor (str decodificada).

encoding: str#

Codificación de cadena usada para decodificar requests.Response.headers y requests.Response.content. El valor predeterminado es "utf-8".

headers: str#

Cabeceras de respuesta decodificadas con requests.Response.encoding y devueltas como str.

content: str#

Cuerpo de la respuesta decodificado con requests.Response.encoding y devuelto como str.

json() → dict#

Analiza requests.Response.content como JSON y devuelve el objeto resultante.

Funciones#

requests.request(method: str, url: str, data: bytes | str | None = None, json: Any | None = None, files: dict | None = None, headers: dict | None = None, auth: tuple | None = None, stream: Any | None = None, timeout: float | None = 5.0) → Response#

Envía una petición HTTP a url y devuelve un requests.Response.

  • method — Método HTTP como str (por ejemplo, "GET", "POST").

  • url — URL de destino. Debe empezar por http:// o https://.

  • data — Cuerpo de la solicitud sin procesar. Un str se codifica en UTF-8 antes de enviarse. Si se establece, Content-Length se añade automáticamente.

  • json — Objeto serializado a JSON y enviado como cuerpo. Establece Content-Type: application/json.

  • files — Diccionario que asigna un nombre de campo a una tupla (filename, fileobj). Se envía como multipart/form-data.

  • headers — Diccionario de cabeceras de solicitud adicionales. El diccionario se copia, por lo que el diccionario del llamador nunca se modifica (y una cabecera Authorization añadida para auth no se filtra a solicitudes posteriores que lo reutilicen).

  • auth — Tupla (username, password) para autenticación HTTP básica.

  • stream — Aceptado por compatibilidad de API; no se usa.

  • timeout — Tiempo de espera del socket en segundos, aplicado una vez establecida la conexión. El valor predeterminado es 5.0; pase None para bloquear indefinidamente. Al expirar se genera un OSError.

Las respuestas enviadas con Transfer-Encoding: chunked se decodifican de forma transparente, por lo que requests.Response.content siempre contiene el cuerpo ya reensamblado. Las cabeceras de respuesta se comparan sin distinguir mayúsculas de minúsculas. No se siguen las redirecciones: una respuesta 3xx con una cabecera Location genera NotImplementedError.

requests.head(url: str, **kw: Any) → Response#

Envía una petición HTTP HEAD y devuelve un Response.

HEAD es idéntico a GET salvo que el servidor responde únicamente con la línea de estado y las cabeceras; el cuerpo está vacío. Úselo para comprobar si un recurso existe, inspeccionar Content-Length / Content-Type sin descargar la carga útil, o sondear una URL antes de emitir un GET más pesado.

Argumentos:

  • url – URL de destino; debe empezar por http:// o https://.

  • headers (kwarg) – diccionario de cabeceras de petición adicionales.

  • auth (kwarg) – tupla (username, password) para autenticación HTTP básica.

data / json / files / stream de request() se aceptan por completitud, pero rara vez tienen sentido para HEAD.

requests.get(url: str, **kw: Any) → Response#

Envía una petición HTTP GET y devuelve un Response.

GET es el verbo estándar para recuperar una representación del recurso identificado por url. Es seguro (no provoca cambios de estado en el servidor) e idempotente.

Argumentos:

  • url – URL de destino; debe empezar por http:// o https://.

  • headers (kwarg) – diccionario de cabeceras de petición adicionales (por ejemplo, Authorization o Accept).

  • auth (kwarg) – tupla (username, password) para autenticación HTTP básica.

  • timeout (kwarg) – tiempo de espera del socket en segundos (predeterminado 5.0).

El request() subyacente permite un cuerpo de petición mediante data / json, pero la mayoría de los servidores lo ignoran.

requests.post(url: str, **kw: Any) → Response#

Envía una petición HTTP POST y devuelve un Response.

POST envía datos a url, normalmente creando un nuevo recurso subordinado, desencadenando el envío de un formulario o invocando una acción. No es ni seguro ni idempotente: las llamadas repetidas pueden crear recursos duplicados.

Argumentos:

  • url – URL de destino; debe empezar por http:// o https://.

  • data (kwarg) – cuerpo de petición en bruto (similar a bytes). Envía una cabecera Content-Length automáticamente.

  • json (kwarg) – objeto serializado a JSON y enviado como cuerpo. Establece Content-Type: application/json.

  • files (kwarg) – diccionario que asigna un nombre de campo a (filename, fileobj). Se envía como multipart/form-data.

  • headers (kwarg) – diccionario de cabeceras de petición adicionales.

  • auth (kwarg) – tupla (username, password) para autenticación HTTP básica.

  • timeout (kwarg) – tiempo de espera del socket en segundos (predeterminado 5.0). Auméntelo para puntos de conexión lentos, como las API de LLM.

Pase como máximo uno de data / json / files.

requests.put(url: str, **kw: Any) → Response#

Envía una petición HTTP PUT y devuelve un Response.

PUT reemplaza el recurso en url con la representación suministrada, creándolo si no existe. Es idempotente: repetir un PUT idéntico produce el mismo estado final.

Argumentos:

  • url – URL de destino; debe empezar por http:// o https://.

  • data (kwarg) – cuerpo de reemplazo en bruto (similar a bytes).

  • json (kwarg) – objeto serializado a JSON y enviado como cuerpo de reemplazo. Establece Content-Type: application/json.

  • headers (kwarg) – diccionario de cabeceras de petición adicionales.

  • auth (kwarg) – tupla (username, password) para autenticación HTTP básica.

Pase data o json para transportar la nueva representación.

requests.patch(url: str, **kw: Any) → Response#

Envía una petición HTTP PATCH y devuelve un Response.

PATCH aplica una modificación parcial al recurso en url – solo cambian los campos contenidos en el cuerpo de la petición. A diferencia de PUT, no se requiere que sea idempotente (aunque muchas API lo hacen así).

Argumentos:

  • url – URL de destino; debe empezar por http:// o https://.

  • data (kwarg) – cuerpo delta en bruto (similar a bytes). El formato depende del servidor (por ejemplo, JSON Patch, JSON Merge Patch).

  • json (kwarg) – objeto delta serializado a JSON. Establece Content-Type: application/json.

  • headers (kwarg) – diccionario de cabeceras de petición adicionales.

  • auth (kwarg) – tupla (username, password) para autenticación HTTP básica.

requests.delete(url: str, **kw: Any) → Response#

Envía una petición HTTP DELETE y devuelve un Response.

DELETE solicita la eliminación del recurso en url. Es idempotente: eliminar un recurso ya eliminado no es un error (el servidor normalmente devuelve un 404, pero el estado final es el mismo).

Argumentos:

  • url – URL de destino; debe empezar por http:// o https://.

  • headers (kwarg) – diccionario de cabeceras de petición adicionales.

  • auth (kwarg) – tupla (username, password) para autenticación HTTP básica.

El request() subyacente permite un cuerpo mediante data / json, pero rara vez se usa con DELETE.