Ombyggnad 2026/2027 pågår - döda länkar förekommer. Mer information

Använd Pythons egna bibliotek istället för Requests

2026-04-05 på Anders Ytterströms webblogg

Jag har i dagarna reviderat kod som hanterar en del HTTP-anrop mot ett REST-API. Jag kom på att kunde vara en kul grej att se hur mycket läsbarhet som gick förlorad om jag fimpade requests och körde med standardbiblioteket i Python.

Enkelt exempel

Följande gör ett HTTP GET-anrop, med ett set HTTP-headers.

from urllib.request import Request, urlopen

req = Request(full_url, headers=headers)
with urlopen(req) as response:
    # gör saker

Original:

import requests

response = requests.get(
    url=full_url,
    headers=headers
)
# gör saker

Mer avancerat exempel

Följande gör ett HTTP SEARCH-anrop och parsar svaret som ett JSON-objekt.

from urllib.request import Request, urlopen

req = Request(
    f"{url}/folders", 
    headers=headers, 
    method="SEARCH"
)
with urlopen(req) as response:
    data = json.loads(
        response.read().decode("utf-8")
    )
    folders = data["data"]

Original:

import requests

folders = requests.request(
    "SEARCH",
    url=f"{url}/folders",
    headers=headers,
).json()["data"]

Sista exemplet: Filhantering

Följande laddar hem en fil och skriver dess innehåll till disk.

from urllib.request import Request, urlopen

req = Request(
    full_url, headers=headers
)
with urlopen(req) as response:
    with open(
        "grejor.zip", "wb"
    ) as f:
        f.write(response.read())

Original:

import requests

resp = requests.get(
    url=full_url,
    headers=headers,
)

with open(f"grejor.zip", "wb") as f:
    f.write(resp.content)

Slutsats

Jag är redo att fimpa requests. Läsbarheten blir något sämre, men det är inte så illa som jag befarade. Med litet träning så kommer det bli naturligt. För mer avancerade grejor så kommer jag förmodligen att använda det vidare, eller httpx om jag vill använda Pythons asynkrona styrkor, eller behöver prata HTTP/2.

Vidare läsning:


Ovanstående inlägg publicerades 2026-04-05. Det går att prenumerera på denna webblogg. Härifrån är följande mål rekommenderade: