Comment utiliser httpx, un client web pour Python

-

Le paquet httpx pour Python est un client web sophistiqué. Une fois que vous l’avez installé, vous pouvez l’utiliser pour obtenir des données à partir de sites web. Comme d’habitude, la façon la plus simple de l’installer est d’utiliser l’utilitaire pip :

python -m pip install httpx --user

Pour l’utiliser, importez-le dans un script Python, puis utilisez la fonction .get pour récupérer les données d’une adresse web :

import httpx
result = httpx.get("https://httpbin.org/get?hello=world")
result.json()["args"]

Voici le résultat de ce simple script :
{'hello': 'world'}

Réponse HTTP

Par défaut, httpx ne lève pas d’erreur sur un statut non-200.

Essayez ce code :

result = httpx.get("https://httpbin.org/status/404")

print(result)

Le résultat :

Il est possible de lever une réponse de manière explicite. Ajoutez ce gestionnaire d’exception :

try:
    result.raise_for_status()
except Exception as exc:
    print("woops", exc)

Voici le résultat :

woops Client error '404 NOT FOUND' for url 'https://httpbin.org/status/404'
For more information check: https://httpstatuses.com/404

Client personnalisé

Il est intéressant d’utiliser un client personnalisé pour tout ce qui n’est pas le script le plus simple. En dehors des améliorations de performance, comme la mise en commun des connexions, c’est un bon endroit pour configurer le client.

Par exemple, vous pouvez définir une URL de base personnalisée :

client = httpx.Client(base_url="https://httpbin.org")
result = client.get("/get?source=custom-client")
result.json()["args"]

Exemple de sortie :
{'source': 'custom-client'}

Ceci est utile pour un scénario typique où vous utilisez le client pour parler à un serveur spécifique. Par exemple, en utilisant à la fois base_url et auth, vous pouvez construire une belle abstraction pour un client authentifié :

client = httpx.Client(
    base_url="https://httpbin.org",
    auth=("good_person", "secret_password"),
)
result = client.get("/basic-auth/good_person/secret_password")
result.json()

Sortie :

{'authenticated': True, 'user': 'good_person'}

Une des choses les plus agréables que vous pouvez utiliser est de construire le client dans une fonction « main » de haut niveau et de le faire circuler. Cela permet aux autres fonctions d’utiliser le client et de faire des tests unitaires avec un client connecté à une application WSGI locale.

def get_user_name(client):
    result = client.get("/basic-auth/good_person/secret_password")
    return result.json()["user"]

get_user_name(client)
#>    'good_person'

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'application/json')])
    return [b'{"user": "pretty_good_person"}']
fake_client = httpx.Client(app=application, base_url="https://fake-server")
get_user_name(fake_client)

Sortie :

'pretty_good_person'

Essayez httpx

Visitez python-httpx.org pour plus d’informations, de documentation et de tutoriels. J’ai trouvé que c’était un module excellent et flexible pour interagir avec HTTP. Essayez-le et voyez ce qu’il peut faire pour vous.

Alfredhttps://www.alfreddagenais.com
Je suis un développeur Web Full Stack sénior. Chaque jour est pour moi une journée de plus pour découvrir de nouvelles idées. Le développement web et l'informatique sont omniprésents dans mon quotidien. Pour que la créativité soit à son maximum, il ne faut pas avoir peur d’expérimenter et nous avons tous que le Web est infiniment grand pour expérimenter nos idées.

Buy me a coffee Paypal Patreon Ko-Fi

Share this article

Recent posts

Popular categories

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Recent comments