Heim > Backend-Entwicklung > Python-Tutorial > Einführung und Verwendung des HTTPX-Webclients von Python

Einführung und Verwendung des HTTPX-Webclients von Python

WBOY
Freigeben: 2023-04-23 20:07:05
nach vorne
1941 Leute haben es durchsucht

httpx:一个 Python Web 客户端

Pythons ​​httpx​​ Paket ist ein anspruchsvoller Web-Client. Sobald Sie es installiert haben, können Sie damit Daten von Websites abrufen. Wie üblich ist die einfachste Möglichkeit zur Installation die Verwendung von ​​pip​​ Tools: ​httpx​​ 包是一个复杂的 Web 客户端。当你安装它后,你就可以用它来从网站上获取数据。像往常一样,安装它的最简单方法是使用 ​​pip​​ 工具:

$ python -m pip install httpx --user
Nach dem Login kopieren

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

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

Nach dem Login kopieren

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

{'hello': 'world'}
Nach dem Login kopieren

HTTP 响应

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

试试这个代码:

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

Nach dem Login kopieren

结果是:

<Response [404 NOT FOUND]>
Nach dem Login kopieren

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

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

Nach dem Login kopieren

下面是结果:

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

Nach dem Login kopieren

自定义客户端

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

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

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

Nach dem Login kopieren

输出示例:

{'source': 'custom-client'}
Nach dem Login kopieren

这对用客户端与一个特定的服务器对话的典型场景很有用。例如,使用 ​​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()

Nach dem Login kopieren

Um es zu verwenden, importieren Sie es in Python-Skript und verwenden Sie dann ​​.get​​ Funktion ruft Daten von einer Webadresse ab:

{'authenticated': True, 'user': 'good_person'}
Nach dem Login kopieren

Hier ist die Ausgabe dieses einfachen Skripts:

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)

Nach dem Login kopieren

HTTP-Antwort

Standardmäßig ​​httpx​​ löst keinen Fehler im Nicht-200-Status aus.

Versuchen Sie diesen Code:

'pretty_good_person'
Nach dem Login kopieren
Das Ergebnis ist: 🎜rrreee🎜Sie können eine Antwort explizit zurückgeben. Fügen Sie diese Ausnahmebehandlung hinzu: 🎜rrreee🎜Hier ist das Ergebnis: 🎜rrreee🎜Benutzerdefinierter Client🎜🎜Für alle Skripte außer den einfachsten ist es sinnvoll, einen benutzerdefinierten Client zu verwenden. Neben netten Leistungsverbesserungen wie Verbindungspooling ist dies auch ein großartiger Ort zum Konfigurieren des Clients. 🎜🎜Zum Beispiel können Sie eine benutzerdefinierte Basis-URL festlegen: 🎜rrreee🎜Beispielausgabe: 🎜rrreee🎜Dies ist nützlich für das typische Szenario, bei dem ein Client mit einem bestimmten Server kommuniziert. Verwenden Sie zum Beispiel: height: inherit; overflow-wrap: break-word;">​base_url​​ und ​
Verwandte Etiketten:
Quelle:51cto.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage