HTTP-forespørsler med requests og httpx
Hent nettsider, og håndter omdirigeringer, økter og headere.
HTTP-forespørsler med requests og httpx er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.
requests-biblioteket
requests er standardbiblioteket for synkron HTTP. Det er enkelt, velprøvd og perfekt for skript og enkeltstående API-kall.
# pip install requests
import requests
r = requests.get("https://api.github.com/users/octocat")
print(r.status_code) # 200
print(r.json()["login"]) # octocatSpørringsparametere og headere
Send spørringsparametere med params= og egendefinerte headere med headers=.
import requests
r = requests.get(
"https://api.example.com/search",
params={"q": "python", "page": 1},
headers={"Authorization": "Bearer my-token"}
)
print(r.url) # full URL with query stringPOST med JSON-innhold
Send JSON-data med json= – requests setter automatisk Content-Type: application/json.
import requests
r = requests.post(
"https://api.example.com/users",
json={"name": "Alice", "email": "alice@example.com"}
)
print(r.status_code) # 201
print(r.json())Sesjonsobjekter
Bruk en requests.Session til å bevare headere, informasjonskapsler og tilkoblingspooling på tvers av flere forespørsler.
import requests
with requests.Session() as s:
s.headers.update({"Authorization": "Bearer token"})
users = s.get("https://api.example.com/users").json()
profile = s.get("https://api.example.com/me").json()Tidsavbrudd og nye forsøk
Angi alltid et tidsavbrudd. Bruk urllib3.util.retry.Retry sammen med en HTTPAdapter for automatiske nye forsøk.
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
s = requests.Session()
retry = Retry(total=3, backoff_factor=1)
s.mount("https://", HTTPAdapter(max_retries=retry))
r = s.get("https://api.example.com/data", timeout=5)Håndtering av feil
Kall r.raise_for_status() for å utløse en HTTPError ved 4xx/5xx-svar.
import requests
try:
r = requests.get("https://api.example.com/data")
r.raise_for_status()
data = r.json()
except requests.HTTPError as e:
print(f"HTTP error: {e.response.status_code}")
except requests.ConnectionError:
print("Network unreachable")Nedlasting av filer
Strøm store filnedlastinger med stream=True for å unngå å laste alt inn i minnet.
import requests
with requests.get("https://example.com/large.zip", stream=True) as r:
r.raise_for_status()
with open("large.zip", "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)httpx – moderne asynkron HTTP
httpx har samme API som requests, men støtter asynkron kjøring. Bruk det i FastAPI-apper og asynkrone arbeidsflyter.
# pip install httpx
import httpx
# Synchronous:
r = httpx.get("https://httpbin.org/get")
print(r.json())
# Asynchronous:
import asyncio
async def main():
async with httpx.AsyncClient() as c:
r = await c.get("https://httpbin.org/get")
print(r.json())
asyncio.run(main())httpx AsyncClient
Del én enkelt AsyncClient mellom forespørsler for tilkoblingspooling. Opprett den ved oppstart, og lukk den ved avslutning.
import httpx, asyncio
CLIENT: httpx.AsyncClient | None = None
async def startup():
global CLIENT
CLIENT = httpx.AsyncClient(timeout=10)
async def shutdown():
await CLIENT.aclose()Hjelpere for autentisering
Både requests og httpx støtter autentiseringshjelpere: auth=(user, pass) for Basic-autentisering og egendefinerte Auth-klasser for tokenautentisering.
import httpx
class BearerAuth(httpx.Auth):
def __init__(self, token): self.token = token
def auth_flow(self, request):
request.headers["Authorization"] = f"Bearer {self.token}"
yield request
async with httpx.AsyncClient(auth=BearerAuth("my-token")) as c:
r = await c.get("https://api.example.com/me")Mocking av HTTP i tester
Bruk respx (for httpx) eller responses (for requests) til å mocke HTTP-kall i tester.
# pip install respx
import httpx, respx, asyncio
@respx.mock
async def test_api():
respx.get("https://api.example.com/users").mock(
return_value=httpx.Response(200, json=[{"id":1}])
)
async with httpx.AsyncClient() as c:
r = await c.get("https://api.example.com/users")
assert r.json() == [{"id": 1}]Hurtigsjekk
Hva gjør response.raise_for_status()?
Oppsummering
Bruk requests for synkron HTTP. Bruk httpx når asynkron kjøring er nødvendig. Angi alltid tidsavbrudd, bruk sesjoner for gjenbruk av tilkoblinger, kall raise_for_status(), og strøm store nedlastinger. Mock HTTP i tester med respx eller responses.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 76
- Leksjoner
- 320
Ofte stilte spørsmål
Er leksjonen «HTTP-forespørsler med requests og httpx» gratis?
Ja – hele teksten i «HTTP-forespørsler med requests og httpx» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «HTTP-forespørsler med requests og httpx»?
Hent nettsider, og håndter omdirigeringer, økter og headere. Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Python Academy?
Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «HTTP-forespørsler med requests og httpx»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?
Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- HTTP-forespørsler med requests og httpx
- Analysere HTML med BeautifulSoup
- Bygge en Scrapy-spider
- Håndtere JavaScript og tiltak mot scraping