首頁  >  文章  >  後端開發  >  介紹並使用 Python 的 HTTPX Web 用戶端

介紹並使用 Python 的 HTTPX Web 用戶端

WBOY
WBOY轉載
2023-04-23 20:07:051881瀏覽

httpx:一个 Python Web 客户端

Python 的 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()

#輸出:

{'authenticated': True, 'user': 'good_person'}

你可以用它來做一件更棒的事情,就是在頂層的「主」 函數中建立客戶端,然後把它傳遞給其他函數。這可以讓其他函數使用客戶端,並讓它們與連接到本機 WSGI 應用的用戶端進行單元測試。

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)

輸出:

'pretty_good_person'

嘗試 httpx

請造訪 python-httpx.org 以了解更多資訊、文件和教學課程。我發現它是一個與 HTTP 互動的優秀且靈活的模組。試一試,看看它能為你做些什麼。

以上是介紹並使用 Python 的 HTTPX Web 用戶端的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除