requests — Client HTTP#
Il modulo requests fornisce un’API client HTTP/HTTPS minimale simile alla libreria Python requests. Ogni funzione di richiesta restituisce un oggetto requests.Response.
Esempio:
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)#
Rappresenta una risposta HTTP. Le istanze vengono restituite da
requests.requeste dagli helper specifici per metodo.- encoding: str#
Codifica della stringa usata per decodificare
requests.Response.headerserequests.Response.content. Il valore predefinito è"utf-8".
- headers: str#
Header della risposta decodificati con
requests.Response.encodinge restituiti comestr.
- content: str#
Corpo della risposta decodificato con
requests.Response.encodinge restituito comestr.
- json() dict#
Analizza
requests.Response.contentcome JSON e restituisce l’oggetto risultante.
Funzioni#
- 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#
Invia una richiesta HTTP a
urle restituisce unrequests.Response.method— Metodo HTTP comestr(ad esempio"GET","POST").url— URL di destinazione. Deve iniziare conhttp://ohttps://.data— Corpo grezzo della richiesta. Unastrviene codificata in UTF-8 prima dell’invio. Se impostato,Content-Lengthviene aggiunto automaticamente.json— Oggetto serializzato in JSON e inviato come corpo. ImpostaContent-Type: application/json.files— Dizionario che associa il nome del campo a una tupla(filename, fileobj). Inviato comemultipart/form-data.headers— Dict di header aggiuntivi della richiesta. Il dict viene copiato, quindi quello del chiamante non viene mai modificato (e un headerAuthorizationaggiunto perauthnon si propaga alle richieste successive che lo riutilizzano).auth— Tupla(username, password)per l’autenticazione HTTP Basic.stream— Accettato per compatibilità con l’API; non utilizzato.timeout— Timeout del socket in secondi, applicato una volta stabilita la connessione. Il valore predefinito è5.0; passaNoneper bloccare indefinitamente. Allo scadere viene sollevata unaOSError.
Le risposte inviate con
Transfer-Encoding: chunkedvengono decodificate in modo trasparente, quindirequests.Response.contentcontiene sempre il corpo ricomposto (de-chunked). Gli header di risposta vengono confrontati senza distinzione tra maiuscole e minuscole. I redirect non vengono seguiti: una risposta 3xx con un headerLocationsollevaNotImplementedError.
- requests.head(url: str, **kw: Any) Response#
Invia una richiesta HTTP
HEADe restituisce unResponse.HEADè identico aGETtranne che il server risponde solo con la riga di stato e gli header; il corpo è vuoto. Usalo per verificare se una risorsa esiste, ispezionareContent-Length/Content-Typesenza scaricare il payload, o sondare un URL prima di effettuare unGETpiù pesante.Argomenti:
url– URL di destinazione; deve iniziare conhttp://ohttps://.headers(kwarg) – dizionario di header aggiuntivi della richiesta.auth(kwarg) – tupla(username, password)per l’autenticazione HTTP Basic.
data/json/files/streamdirequest()sono accettati per completezza ma hanno raramente senso perHEAD.
- requests.get(url: str, **kw: Any) Response#
Invia una richiesta HTTP
GETe restituisce unResponse.GETè il verbo standard per recuperare una rappresentazione della risorsa identificata daurl. È sicuro (non causa alcun cambiamento di stato lato server) e idempotente.Argomenti:
url– URL di destinazione; deve iniziare conhttp://ohttps://.headers(kwarg) – dizionario di header aggiuntivi della richiesta (ad esempioAuthorizationoAccept).auth(kwarg) – tupla(username, password)per l’autenticazione HTTP Basic.timeout(kwarg) – timeout del socket in secondi (predefinito5.0).
Un corpo di richiesta tramite
data/jsonè consentito dal sottostanterequest()ma viene ignorato dalla maggior parte dei server.
- requests.post(url: str, **kw: Any) Response#
Invia una richiesta HTTP
POSTe restituisce unResponse.POSTinvia dati aurl, tipicamente creando una nuova risorsa subordinata, attivando l’invio di un modulo o invocando un’azione. Non è né sicuro né idempotente: chiamate ripetute possono creare risorse duplicate.Argomenti:
url– URL di destinazione; deve iniziare conhttp://ohttps://.data(kwarg) – corpo grezzo della richiesta (di tipobytes). Invia automaticamente un headerContent-Length.json(kwarg) – oggetto serializzato in JSON e inviato come corpo. ImpostaContent-Type: application/json.files(kwarg) – dizionario che associa un nome di campo a(filename, fileobj). Inviato comemultipart/form-data.headers(kwarg) – dizionario di header aggiuntivi della richiesta.auth(kwarg) – tupla(username, password)per l’autenticazione HTTP Basic.timeout(kwarg) – timeout del socket in secondi (predefinito5.0). Aumentalo per endpoint lenti come le API LLM.
Passa al massimo uno tra
data/json/files.
- requests.put(url: str, **kw: Any) Response#
Invia una richiesta HTTP
PUTe restituisce unResponse.PUTsostituisce la risorsa aurlcon la rappresentazione fornita, creandola se non esiste. È idempotente: ripetere unPUTidentico produce lo stesso stato finale.Argomenti:
url– URL di destinazione; deve iniziare conhttp://ohttps://.data(kwarg) – corpo grezzo di sostituzione (di tipobytes).json(kwarg) – oggetto serializzato in JSON e inviato come corpo di sostituzione. ImpostaContent-Type: application/json.headers(kwarg) – dizionario di header aggiuntivi della richiesta.auth(kwarg) – tupla(username, password)per l’autenticazione HTTP Basic.
Passa
dataoppurejsonper trasportare la nuova rappresentazione.
- requests.patch(url: str, **kw: Any) Response#
Invia una richiesta HTTP
PATCHe restituisce unResponse.PATCHapplica una modifica parziale alla risorsa aurl– cambiano solo i campi contenuti nel corpo della richiesta. A differenza diPUT, non è tenuto a essere idempotente (anche se molte API lo rendono tale).Argomenti:
url– URL di destinazione; deve iniziare conhttp://ohttps://.data(kwarg) – corpo grezzo del delta (di tipobytes). Il formato dipende dal server (ad esempio JSON Patch, JSON Merge Patch).json(kwarg) – oggetto delta serializzato in JSON. ImpostaContent-Type: application/json.headers(kwarg) – dizionario di header aggiuntivi della richiesta.auth(kwarg) – tupla(username, password)per l’autenticazione HTTP Basic.
- requests.delete(url: str, **kw: Any) Response#
Invia una richiesta HTTP
DELETEe restituisce unResponse.DELETErichiede la rimozione della risorsa aurl. È idempotente: eliminare una risorsa già eliminata non è un errore (il server tipicamente restituisce un 404, ma lo stato finale è lo stesso).Argomenti:
url– URL di destinazione; deve iniziare conhttp://ohttps://.headers(kwarg) – dizionario di header aggiuntivi della richiesta.auth(kwarg) – tupla(username, password)per l’autenticazione HTTP Basic.
Un corpo tramite
data/jsonè consentito dal sottostanterequest()ma viene usato raramente conDELETE.