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

Présentation et utilisation du client Web HTTPX de Python

WBOY
WBOYavant
2023-04-23 20:07:051823parcourir

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

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

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

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

{'hello': 'world'}

HTTP 响应

默认情况下,​​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 HTTP

Par 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 ​
Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer