Maison  >  Article  >  développement back-end  >  Comment utiliser Python httpx

Comment utiliser Python httpx

WBOY
WBOYavant
2023-04-18 23:43:032827parcourir

Qu'est-ce que Httpx

Httpx est une bibliothèque Python qui fournit un client et un serveur HTTP modernes et faciles à utiliser. Httpx fonctionne avec le framework asynchrone de Python et prend en charge WebSocket et HTTP/2. Httpx offre d'excellentes performances, sécurité et configuration flexible pour une variété de protocoles, d'encodages et de schémas d'authentification différents.

Installer Httpx

L'installation de la bibliothèque Httpx est très simple. Exécutez simplement la commande suivante à l'aide du gestionnaire de packages pip :

pip install httpx

Si vous utilisez Python 3.7 ou une version antérieure, vous devez installer la dépendance asynchrone de Httpx aiohttp.

Vous pouvez l'installer en exécutant la commande suivante :

pip install httpx[aiohttp]

Envoyer des requêtes HTTP

Envoyer des requêtes HTTP à l'aide de Httpx est très simple. Voici un exemple simple qui utilise Httpx pour envoyer une requête GET :

import httpx

response = httpx.get('https://www.baidu.com')
print(response.status_code)
print(response.text)

Dans cet exemple, nous avons envoyé une requête GET en utilisant la méthode get de Httpx. L'URL demandée est https://www.baidu.com. Cette méthode renvoie un objet Response que nous pouvons utiliser pour accéder au code d'état de la réponse et au texte de la réponse.

Httpx prend en charge de nombreuses méthodes HTTP différentes, notamment GET, POST, PUT, DELETE, HEAD et OPTIONS. Vous pouvez utiliser les méthodes Httpx pour envoyer ces requêtes.

Voici quelques exemples :

import httpx

response = httpx.post('https://www.baidu.com', data={'key': 'value'})
response = httpx.put('https://www.baidu.com', data={'key': 'value'})
response = httpx.delete('https://www.baidu.com')
response = httpx.head('https://www.baidu.com')
response = httpx.options('https://www.baidu.com')

Chacune des requêtes des exemples ci-dessus peut être envoyée à l'aide des méthodes Httpx. La plupart de ces méthodes prennent en charge la transmission de paramètres tels que les données, les en-têtes et les paramètres de requête.

Envoyer des requêtes HTTP asynchrones

Httpx prend également en charge les requêtes HTTP asynchrones. Voici un exemple simple qui utilise Httpx pour envoyer une requête GET asynchrone :

import httpx
import asyncio

async def get_request():
    async with httpx.AsyncClient() as client:
        response = await client.get('https://www.baidu.com')
        print(response.status_code)
        print(response.text)

asyncio.run(get_request())

Dans cet exemple, nous avons créé une fonction asynchrone appelée get_request qui utilise la classe AsyncClient de Httpx pour envoyer une requête GET asynchrone. Dans la fonction asynchrone, nous utilisons l'instruction async with pour créer un client asynchrone de Httpx. Créer le client de cette manière garantit que le client est automatiquement fermé une fois la demande terminée. Nous utilisons ensuite le mot-clé wait pour attendre de manière asynchrone la réponse et accéder au code d'état de la réponse et au texte de la réponse à partir de l'objet de réponse.

Semblable aux requêtes synchrones, le client asynchrone de Httpx prend également en charge de nombreuses méthodes HTTP différentes.

Voici quelques exemples :

import httpx
import asyncio

async def post_request():
    async with httpx.AsyncClient() as client:
        response = await client.post('https://www.baidu.com', data={'key': 'value'})
        print(response.status_code)
        print(response.text)

asyncio.run(post_request())

Définir les en-têtes de requête

Lors de l'envoi d'une requête HTTP, vous devez généralement définir les en-têtes de requête. Httpx vous permet de définir des en-têtes de requête en passant le paramètre headers dans la méthode de requête.

Voici un exemple :

import httpx

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

response = httpx.get('https://www.baidu.com', headers=headers)
print(response.status_code)
print(response.text)

Dans cet exemple, nous définissons un en-tête de requête appelé User-Agent en utilisant le paramètre headers.

Définir les paramètres de requête

Httpx vous permet de définir les paramètres de requête lors de l'envoi de requêtes HTTP.

Voici quelques exemples :

import httpx

params = {'key1': 'value1', 'key2': 'value2'}

response = httpx.get('https://www.baidu.com', params=params)
print(response.status_code)
print(response.text)

Dans cet exemple, nous définissons deux paramètres de requête key1 et key2 à l'aide du paramètre params.

Envoyer le corps de la requête

Lors de l'envoi de requêtes POST, PUT et DELETE, vous devez généralement inclure des données dans le corps de la requête. Httpx vous permet de définir des données dans le corps de la requête à l'aide du paramètre data.

Voici un exemple :

import httpx

data = {'key': 'value'}

response = httpx.post('https://www.baidu.com', data=data)
print(response.status_code)
print(response.text)

Dans cet exemple, nous définissons un paramètre de corps de requête nommé key en utilisant le paramètre data.

Envoyer des données JSON

Httpx vous permet d'envoyer des données JSON à l'aide du paramètre json.

Voici un exemple :

import httpx

data = {'key': 'value'}

response = httpx.post('https://www.baidu.com', json=data)
print(response.status_code)
print(response.text)

Dans cet exemple, nous définissons un paramètre de corps de requête JSON nommé key à l'aide du paramètre json.

Définir le délai d'attente

Lors de l'envoi de requêtes HTTP, vous devez généralement définir un délai d'attente. Httpx vous permet de définir un délai d'attente à l'aide du paramètre timeout.

Voici un exemple :

import httpx

response = httpx.get('https://www.baidu.com', timeout=5)
print(response.status_code)
print(response.text)

Dans cet exemple, nous définissons un timeout de 5 secondes à l'aide du paramètre timeout.

Gestion des erreurs

Httpx peut générer une variété de différents types d'exceptions pour vous aider à diagnostiquer et à résoudre les problèmes. Voici quelques exceptions courantes :

  • httpx.HTTPError : déclenché lorsqu'une erreur HTTP se produit.

  • httpx.RequestError : déclenché lorsqu'une erreur de requête se produit.

  • httpx.NetworkError : déclenché lorsqu'une erreur réseau se produit.

  • httpx.TimeoutException : déclenchée lorsqu'un délai d'attente se produit.

Lors de la gestion de ces exceptions, vous pouvez utiliser les instructions try/sauf pour intercepter l'exception et prendre les mesures appropriées. Voici un exemple :

import httpx

try:
    response = httpx.get('https://www.baidu.com')
    response.raise_for_status()
except httpx.HTTPError as http_error:
    print(f'HTTP error occurred: {http_error}')
except httpx.RequestError as request_error:
    print(f'Request error occurred: {request_error}')
except httpx.NetworkError as network_error:
    print(f'Network error occurred: {network_error}')
except httpx.TimeoutException as timeout_error:
    print(f'Timeout error occurred: {timeout_error}')
else:
    print(response.status_code)
    print(response.text)

Dans cet exemple, nous avons détecté toutes les exceptions possibles à l'aide des instructions try/sauf et avons pris les mesures appropriées en fonction du type d'exception.

Vérification du certificat

Httpx vous permet de vérifier votre certificat SSL pour assurer une connexion sécurisée à votre serveur. Par défaut, Httpx vérifie les certificats SSL. Si vous devez désactiver la vérification du certificat, vous pouvez définir le paramètre verify sur False.

Voici un exemple :

import httpx

response = httpx.get('https://www.baidu.com', verify=False)
print(response.status_code)
print(response.text)

Dans cet exemple, nous définissons le paramètre verify sur False pour désactiver la vérification du certificat SSL.

Utiliser un proxy

Httpx vous permet d'utiliser un proxy pour envoyer des requêtes HTTP. Voici un exemple :

import httpx

proxies = {
    'http://http-proxy-server:8080',
    'https://https-proxy-server:8080'
}

response = httpx.get('https://www.baidu.com', proxies=proxies)
print(response.status_code)
print(response.text)

Dans cet exemple, nous avons mis en place deux serveurs proxy en utilisant le paramètre proxys.

Télécharger des fichiers

Httpx vous permet de télécharger des fichiers en utilisant le paramètre files. Voici un exemple :

import httpx

files = {'file': ('file.txt', open('file.txt', 'rb'))}

response = httpx.post('https://www.baidu.com', files=files)
print(response.status_code)
print(response.text)

在这个示例中,我们使用 files 参数上传了名为 file.txt 的文件。

使用 Cookie

Httpx 允许您使用 cookies 参数发送 cookie。以下是一个示例:

import httpx

cookies = {'name': 'value'}

response = httpx.get('https://www.baidu.com', cookies=cookies)
print(response.status_code)
print(response.text)

在这个示例中,我们使用 cookies 参数发送了名为 name 的 cookie。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer