Maison >développement back-end >Tutoriel Python >Présentation et utilisation du client Web HTTPX de Python
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
要使用它,把它导入到 Python 脚本中,然后使用 .get
函数从一个 web 地址获取数据:
import httpx result = httpx.get("https://httpbin.org/get?hello=world") result.json()["args"]
下面是这个简单脚本的输出:
{'hello': 'world'}
默认情况下,httpx
不会在非 200 状态下引发错误。
试试这个代码:
result = httpx.get("https://httpbin.org/status/404") result
结果是:
<Response [404 NOT FOUND]>
可以明确地返回一个响应。添加这个异常处理:
try: result.raise_for_status() except Exception as exc: print("woops", exc)
下面是结果:
woops Client error '404 NOT FOUND' for url 'https://httpbin.org/status/404' For more information check: https://httpstatuses.com/404
除了最简单的脚本之外,使用一个自定义的客户端是有意义的。除了不错的性能改进,比如连接池,这也是一个配置客户端的好地方。
例如, 你可以设置一个自定义的基本 URL:
client = httpx.Client(base_url="https://httpbin.org") result = client.get("/get?source=custom-client") result.json()["args"]
输出示例:
{'source': 'custom-client'}
这对用客户端与一个特定的服务器对话的典型场景很有用。例如,使用 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()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'}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)Réponse HTTPPar défaut,
httpx
ne générera pas d'erreur dans un statut non-200. Essayez ce code : 'pretty_good_person'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