Come utilizzare la libreria delle richieste di Python per HTTP

La libreria requests ​​è un modulo Python popolare che semplifica il processo di creazione di richieste HTTP. Astrae la complessità della gestione di richieste e risposte, rendendo più semplice l'interazione con i servizi Web e le API. In questo articolo, esploreremo le basi dell'utilizzo della libreria requests, incluso come inviare vari tipi di richieste HTTP e gestire le risposte.

Installazione della libreria Requests

Prima di poter usare la libreria requests, dovrai installarla. Puoi installarla usando pip, il gestore di pacchetti Python. Esegui il seguente comando nel tuo terminale:

pip install requests

Creazione di una semplice richiesta GET

La richiesta HTTP più elementare è una richiesta GET, che recupera dati da un server. Ecco come puoi usare la libreria requests ​​per fare una richiesta GET:

import requests

response = requests.get('https://api.github.com')
print(response.status_code)
print(response.json())

In questo esempio, inviamo una richiesta GET all'API GitHub e stampiamo il codice di stato HTTP e il contenuto della risposta in formato JSON.

Invio di richieste POST

Le richieste POST vengono utilizzate per inviare dati a un server, come gli invii di moduli. Ecco come inviare una richiesta POST con la libreria requests:

import requests

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=data)
print(response.status_code)
print(response.json())

In questo esempio, inviamo una richiesta POST con alcuni dati del modulo al servizio di test httpbin.org e stampiamo il codice di stato della risposta e il contenuto.

Gestione dei parametri di query

A volte è necessario includere parametri di query nelle richieste. La libreria requests ​​semplifica questa operazione consentendo di passare i parametri come un dizionario:

import requests

params = {'search': 'python', 'page': 1}
response = requests.get('https://httpbin.org/get', params=params)
print(response.status_code)
print(response.url)

In questo esempio, includiamo i parametri di query in una richiesta GET e stampiamo l'URL finale con i parametri inclusi.

Lavorare con le intestazioni

Potresti dover includere intestazioni personalizzate nelle tue richieste, ad esempio per l'autenticazione o per specificare i tipi di contenuto. Ecco come aggiungere intestazioni alle tue richieste:

import requests

headers = {'Authorization': 'Bearer YOUR_TOKEN'}
response = requests.get('https://api.github.com/user', headers=headers)
print(response.status_code)
print(response.json())

In questo esempio, includiamo un'intestazione di autorizzazione nella richiesta all'API GitHub e stampiamo il codice di stato e il contenuto della risposta.

Gestione dei timeout e delle eccezioni

È importante gestire potenziali problemi come timeout di rete e altre eccezioni. La libreria requests ​​consente di specificare timeout e catturare eccezioni:

import requests
from requests.exceptions import RequestException

try:
    response = requests.get('https://httpbin.org/delay/5', timeout=3)
    response.raise_for_status()
    print(response.status_code)
    print(response.text)
except RequestException as e:
    print(f'An error occurred: {e}')

In questo esempio, impostiamo un timeout per la richiesta e catturiamo eventuali eccezioni, stampando un messaggio di errore se qualcosa va storto.

Conclusione

La libreria requests ​​è uno strumento potente e intuitivo per effettuare richieste HTTP in Python. Che tu stia recuperando dati da API, inviando form o gestendo intestazioni personalizzate, la libreria requests ​​semplifica l'esecuzione di queste attività con solo poche righe di codice. Padroneggiando le basi trattate in questo articolo, sarai ben equipaggiato per interagire con servizi Web e API nei tuoi progetti Python.