requests — Client HTTP#

Le module requests fournit une API client HTTP/HTTPS minimale, similaire à la bibliothèque Python requests. Chaque fonction de requête renvoie un objet requests.Response.

Exemple

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())

Classe Response#

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

Représente une réponse HTTP. Les instances sont renvoyées par requests.request et par les fonctions auxiliaires propres à chaque méthode.

status_code: int#

Code d’état HTTP entier renvoyé par le serveur.

reason: str#

Phrase explicative renvoyée par le serveur (str décodée).

encoding: str#

Encodage de chaîne utilisé pour décoder requests.Response.headers et requests.Response.content. Vaut "utf-8" par défaut.

headers: str#

En-têtes de réponse décodés avec requests.Response.encoding et renvoyés sous forme de str.

content: str#

Corps de la réponse décodé avec requests.Response.encoding et renvoyé sous forme de str.

json() → dict#

Analyse requests.Response.content en tant que JSON et renvoie l’objet résultant.

Fonctions#

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#

Envoie une requête HTTP à url et renvoie un requests.Response.

  • method — Méthode HTTP sous forme de str (par ex. "GET", "POST").

  • url — URL cible. Doit commencer par http:// ou https://.

  • data — Corps brut de la requête. Une str est encodée en UTF-8 avant l’envoi. Si défini, Content-Length est ajouté automatiquement.

  • json — Objet sérialisé en JSON et envoyé comme corps. Définit Content-Type: application/json.

  • files — Dictionnaire associant un nom de champ à un tuple (filename, fileobj). Envoyé en tant que multipart/form-data.

  • headers — Dictionnaire d’en-têtes de requête supplémentaires. Le dictionnaire est copié, de sorte que celui de l’appelant n’est jamais modifié (et un en-tête Authorization ajouté pour auth ne fuit pas dans les requêtes ultérieures qui le réutilisent).

  • auth — Tuple (username, password) pour l’authentification HTTP Basic.

  • stream — Accepté pour la compatibilité de l’API ; non utilisé.

  • timeout — Délai d’expiration du socket en secondes, appliqué une fois la connexion établie. Vaut 5.0 par défaut ; passez None pour bloquer indéfiniment. À l’expiration, une OSError est levée.

Les réponses envoyées avec Transfer-Encoding: chunked sont décodées de manière transparente, de sorte que requests.Response.content contient toujours le corps défragmenté. Les en-têtes de réponse sont comparés sans distinction de casse. Les redirections ne sont pas suivies : une réponse 3xx avec un en-tête Location lève NotImplementedError.

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

Envoie une requête HTTP HEAD et renvoie un Response.

HEAD est identique à GET sauf que le serveur ne répond qu’avec la ligne d’état et les en-têtes ; le corps est vide. Utilisez-la pour vérifier si une ressource existe, inspecter Content-Length / Content-Type sans télécharger la charge utile, ou sonder une URL avant d’émettre un GET plus lourd.

Arguments :

  • url – URL cible ; doit commencer par http:// ou https://.

  • headers (kwarg) – dictionnaire d’en-têtes de requête supplémentaires.

  • auth (kwarg) – tuple (username, password) pour l’authentification HTTP Basic.

data / json / files / stream de request() sont acceptés par exhaustivité mais ont rarement un sens pour HEAD.

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

Envoie une requête HTTP GET et renvoie un Response.

GET est le verbe standard pour récupérer une représentation de la ressource identifiée par url. Il est sûr (ne provoque aucun changement d’état côté serveur) et idempotent.

Arguments :

  • url – URL cible ; doit commencer par http:// ou https://.

  • headers (kwarg) – dictionnaire d’en-têtes de requête supplémentaires (par exemple Authorization ou Accept).

  • auth (kwarg) – tuple (username, password) pour l’authentification HTTP Basic.

  • timeout (kwarg) – délai d’expiration du socket en secondes (5.0 par défaut).

Un corps de requête via data / json est autorisé par la fonction sous-jacente request() mais ignoré par la plupart des serveurs.

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

Envoie une requête HTTP POST et renvoie un Response.

POST soumet des données à url, généralement en créant une nouvelle ressource subordonnée, en déclenchant la soumission d’un formulaire ou en invoquant une action. Il n’est ni sûr ni idempotent : des appels répétés peuvent créer des ressources en double.

Arguments :

  • url – URL cible ; doit commencer par http:// ou https://.

  • data (kwarg) – corps brut de la requête (de type bytes). Envoie automatiquement un en-tête Content-Length.

  • json (kwarg) – objet sérialisé en JSON et envoyé comme corps. Définit Content-Type: application/json.

  • files (kwarg) – dictionnaire associant un nom de champ à (filename, fileobj). Envoyé en tant que multipart/form-data.

  • headers (kwarg) – dictionnaire d’en-têtes de requête supplémentaires.

  • auth (kwarg) – tuple (username, password) pour l’authentification HTTP Basic.

  • timeout (kwarg) – délai d’expiration du socket en secondes (5.0 par défaut). Augmentez-le pour les points de terminaison lents tels que les API de LLM.

Passez au plus un seul de data / json / files.

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

Envoie une requête HTTP PUT et renvoie un Response.

PUT remplace la ressource à url par la représentation fournie, en la créant si elle n’existe pas. Il est idempotent : répéter un PUT identique produit le même état final.

Arguments :

  • url – URL cible ; doit commencer par http:// ou https://.

  • data (kwarg) – corps brut de remplacement (de type bytes).

  • json (kwarg) – objet sérialisé en JSON et envoyé comme corps de remplacement. Définit Content-Type: application/json.

  • headers (kwarg) – dictionnaire d’en-têtes de requête supplémentaires.

  • auth (kwarg) – tuple (username, password) pour l’authentification HTTP Basic.

Passez soit data soit json pour transporter la nouvelle représentation.

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

Envoie une requête HTTP PATCH et renvoie un Response.

PATCH applique une modification partielle à la ressource à url – seuls les champs contenus dans le corps de la requête changent. Contrairement à PUT, il n’est pas tenu d’être idempotent (bien que de nombreuses API le rendent tel).

Arguments :

  • url – URL cible ; doit commencer par http:// ou https://.

  • data (kwarg) – corps de delta brut (de type bytes). Le format dépend du serveur (par ex. JSON Patch, JSON Merge Patch).

  • json (kwarg) – objet delta sérialisé en JSON. Définit Content-Type: application/json.

  • headers (kwarg) – dictionnaire d’en-têtes de requête supplémentaires.

  • auth (kwarg) – tuple (username, password) pour l’authentification HTTP Basic.

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

Envoie une requête HTTP DELETE et renvoie un Response.

DELETE demande la suppression de la ressource à url. Il est idempotent : supprimer une ressource déjà supprimée n’est pas une erreur (le serveur renvoie généralement un 404, mais l’état final est le même).

Arguments :

  • url – URL cible ; doit commencer par http:// ou https://.

  • headers (kwarg) – dictionnaire d’en-têtes de requête supplémentaires.

  • auth (kwarg) – tuple (username, password) pour l’authentification HTTP Basic.

Un corps via data / json est autorisé par la fonction sous-jacente request() mais rarement utilisé avec DELETE.