Maison > développement back-end > Tutoriel Python > Présentation et utilisation du client Web HTTPX de Python

Présentation et utilisation du client Web HTTPX de Python

WBOY
Libérer: 2023-04-23 20:07:05
avant
1941 Les gens l'ont consulté

httpx:一个 Python Web 客户端

​httpx​​ est un client Web complexe. Une fois installé, vous pouvez l'utiliser pour obtenir des données de sites Web. Comme d'habitude, le moyen le plus simple de l'installer est d'utiliser ​​pip​​ Outils : ​httpx​​ 包是一个复杂的 Web 客户端。当你安装它后,你就可以用它来从网站上获取数据。像往常一样,安装它的最简单方法是使用 ​​pip​​ 工具:

$ python -m pip install httpx --user
Copier après la connexion

要使用它,把它导入到 Python 脚本中,然后使用 ​​.get​​ 函数从一个 web 地址获取数据:

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

Copier après la connexion

下面是这个简单脚本的输出:

{'hello': 'world'}
Copier après la connexion

HTTP 响应

默认情况下,​​httpx​​ 不会在非 200 状态下引发错误。

试试这个代码:

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

Copier après la connexion

结果是:

<Response [404 NOT FOUND]>
Copier après la connexion

可以明确地返回一个响应。添加这个异常处理:

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

Copier après la connexion

下面是结果:

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

Copier après la connexion

自定义客户端

除了最简单的脚本之外,使用一个自定义的客户端是有意义的。除了不错的性能改进,比如连接池,这也是一个配置客户端的好地方。

例如, 你可以设置一个自定义的基本 URL:

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

Copier après la connexion

输出示例:

{'source': 'custom-client'}
Copier après la connexion

这对用客户端与一个特定的服务器对话的典型场景很有用。例如,使用 ​​base_url​​ 和 ​​auth​

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

Copier après la connexion

Pour l'utiliser, importez-le dans un script Python , puis utilisez ​​.get​​ fonction obtient les données d'une adresse Web :

{'authenticated': True, 'user': 'good_person'}
Copier après la connexion

Voici le résultat de ce script simple :

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)

Copier après la connexion

Réponse HTTP

Par défaut, ​​httpx​​ ne générera pas d'erreur dans un statut non-200.

Essayez ce code :

'pretty_good_person'
Copier après la connexion
Le résultat est : 🎜rrreee🎜Vous pouvez renvoyer une réponse explicitement. Ajoutez cette gestion des exceptions : 🎜rrreee🎜Voici le résultat : 🎜rrreee🎜Client personnalisé🎜🎜Pour tous les scripts, sauf les plus simples, il est logique d'utiliser un client personnalisé. En plus de belles améliorations de performances telles que le pooling de connexions, c'est également un excellent endroit pour configurer le client. 🎜🎜Par exemple, vous pouvez définir une URL de base personnalisée : 🎜rrreee🎜Exemple de résultat : 🎜rrreee🎜Ceci est utile pour le scénario typique d'un client parlant à un serveur spécifique. Par exemple, utilisez ​​base_url​​ et ​
Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal