python requests HTTP API web

La libreria requests in Python

Obiettivi della pillola

Alla fine di questa pillola saprai:

  • comprendere i principali metodi HTTP;
  • usare la libreria requests per inviare richieste HTTP (GET e POST);
  • gestire header personalizzati, cookies e sessioni;
  • analizzare lo status code e il contenuto della risposta.

Ripasso: i metodi HTTP

I metodi HTTP (o verbs) specificano l’azione che il client vuole eseguire sul server.

  • GET: richiede dati dal server (es. una pagina o un’API).
  • POST: invia dati al server (es. form o JSON).
  • PUT: aggiorna una risorsa esistente.
  • DELETE: elimina una risorsa.
  • HEAD, PATCH, OPTIONS: usati per casi particolari.

Nota: La libreria requests semplifica enormemente l’uso dei metodi HTTP, gestendo internamente connessioni, encoding e redirect.

Richieste GET e POST

Per iniziare: installa la libreria (se necessario) con pip install requests.

import requests

# Esempio GET
r = requests.get("https://api.github.com")
print(r.status_code)    # 200 = OK
print(r.headers["content-type"])
print(r.text[:200])     # primi 200 caratteri della risposta

# Esempio POST con parametri form
data = {"utente": "mario", "punteggio": 42}
r = requests.post("https://httpbin.org/post", data=data)
print(r.json())  # analizza risposta JSON

Header personalizzati

Puoi aggiungere header per specificare informazioni al server.

headers = {
    "User-Agent": "PillolaRequests/1.0",
    "Accept": "application/json"
}
r = requests.get("https://httpbin.org/headers", headers=headers)
print(r.json())

Gestione dei Cookies

Le richieste HTTP possono inviare e ricevere cookies.

# Invio di cookies al server
cookies = {"session_id": "ABC123"}
r = requests.get("https://httpbin.org/cookies", cookies=cookies)
print(r.json())

# Lettura dei cookies ricevuti
print(r.cookies)

Uso delle Sessioni

Le sessioni permettono di mantenere automaticamente i cookies e le impostazioni tra più richieste (come una “navigazione”).

s = requests.Session()
s.headers.update({"User-Agent": "PillolaSession/1.0"})

# Prima richiesta: imposta un cookie
s.get("https://httpbin.org/cookies/set/user/emiliano")

# Seconda richiesta: il cookie e' mantenuto
r = s.get("https://httpbin.org/cookies")
print(r.json())

Analisi della risposta

Ogni oggetto Response include informazioni utili:

  • r.status_code: codice di stato (200, 404, 500…);
  • r.text: corpo della risposta come stringa;
  • r.json(): decodifica automatica se in formato JSON;
  • r.headers: dizionario degli header ricevuti;
  • r.cookies: eventuali cookie restituiti dal server.

Nota: Controlla sempre r.ok per verificare rapidamente se la richiesta è andata a buon fine (True per status 200–399).


In breve: la libreria requests è uno strumento potente e intuitivo per comunicare con API web. Usa sessioni per autenticazioni persistenti e header/cookies per simulare vere richieste da browser.