HTTPX2 is een moderne Python-bibliotheek voor HTTP-verzoeken, voortgekomen uit het HTTPX-project en nu beheerd door Pydantic om continuïteit en beveiligingsupdates te waarborgen. De library biedt een API die grotendeels compatibel is met requests, maar voegt essentiële moderne functionaliteiten toe.
Belangrijkste kenmerken:
- Protocollen: Ondersteuning voor zowel HTTP/1.1 als HTTP/2.
- Flexibiliteit: Biedt zowel synchrone als asynchrone interfaces en een optionele command-line client (CLI).
- Kwaliteit: Volledige type-annotaties, 100% testdekking en strikte timeouts.
- Integraties: Directe ondersteuning voor WSGI- en ASGI-applicaties en naadloze integratie met Pydantic Logfire voor observability via OpenTelemetry.
De bibliotheek is gelicenseerd onder BSD en leunt op dependencies zoals httpcore2, h11 en anyio.
HTTPX2: Een HTTP-client van de volgende generatie voor Python
Toelichting over het project
HTTPX2 is een voortzetting van het uitstekende werk dat is gestart door @lovelydinosaur en de bredere HTTPX-community. We zijn enorm dankbaar voor alles wat er in de loop der jaren in HTTPX is gestoken; het is een fundamenteel onderdeel geworden van het moderne Python-ecosysteem, en dit project zou zonder deze basis niet bestaan.
Omdat er recentelijk beperkte activiteit was bij HTTPX zelf, neemt Pydantic het beheer over onder de naam HTTPX2. Hiermee wordt gewaarborgd dat gebruikers een betrouwbaar en onderhouden pad vooruit hebben, inclusief tijdige beveiligingsupdates voor een bibliotheek die cruciaal is voor veel productiesystemen. Ons doel is om het ontwerp van het oorspronkelijke project te eren, het stabiel te houden voor iedereen die erop vertrouwt en het zorgvuldig verder te ontwikkelen. Dank aan @lovelydinosaur en elke voormalige contributor voor het leggen van zo'n sterk fundament. 💙
Snelstart
Installeer HTTPX2 via pip:
pip install httpx2
Nu kun je aan de slag:
>>> import httpx2
>>> r = httpx2.get('https://www.example.org/')
>>> r
<Response [200 OK]>
>>> r.status_code
200
>>> r.headers['content-type']
'text/html; charset=UTF-8'
>>> r.text
'<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>...'
Alternatief kun je de command-line client gebruiken. De command-line client is een optionele afhankelijkheid:
pip install 'httpx2[cli]'
Hiermee kun je HTTPX2 rechtstreeks vanuit de opdrachtregel gebruiken:
httpx2 --help
Kenmerken
HTTPX2 bouwt voort op de gevestigde gebruiksvriendelijkheid van requests en biedt het volgende:
- Een API die grotendeels compatibel is met
requests.
- Een geïntegreerde command-line client.
- Ondersteuning voor HTTP/1.1 en HTTP/2.
- Een standaard synchrone interface, maar met asynchrone ondersteuning indien nodig.
- De mogelijkheid om verzoeken rechtstreeks naar WSGI- of ASGI-applicaties te sturen.
- Strikte timeouts overal.
- Volledig type-annotated.
- 100% testdekking.
Daarnaast bevat het alle standaardfuncties van requests:
- Internationale domeinen en URL's
- Keep-Alive & Connection Pooling
- Sessies met Cookie Persistence
- Browser-stijl SSL-verificatie
- Basis/Digest Authenticatie
- Elegante Key/Value Cookies
- Automatische decompressie
- Automatische content-decodering
- Unicode response bodies
- Multipart bestandsuploads
- HTTP(S) proxy ondersteuning
- Connection Timeouts
- Streaming downloads
- .netrc ondersteuning
- Chunked requests
Installatie
Installeer met pip:
pip install httpx2
Of, om de optionele HTTP/2-ondersteuning in te voegen, gebruik:
pip install httpx2[http2]
Documentatie
De projectdocumentatie is beschikbaar op https://httpx2.pydantic.dev/.
- Voor een overzicht van de basisprincipes, ga naar de QuickStart.
- Voor meer geavanceerde onderwerpen, zie de secties Advanced Usage, async support of HTTP/2.
- De Developer Interface biedt een uitgebreide API-referentie.
- Voor informatie over tools die integreren met HTTPX, zie Third Party Packages.
Observability met Pydantic Logfire
Installeer Logfire met HTTPX-instrumentatieondersteuning:
pip install 'logfire[httpx]'
HTTPX2 werkt direct uit de doos met Pydantic Logfire, ons observability-platform gebouwd op OpenTelemetry. Eén regel instrumenteert elk verzoek, waardoor je traces, timings en statuscodes krijgt zonder andere wijzigingen:
import logfire
import httpx2
logfire.configure()
logfire.instrument_httpx()
httpx2.get("https://pydantic.dev/")
Dit werkt op dezelfde manier voor expliciete httpx2.Client() en httpx2.AsyncClient() instanties. Je kunt de instrumentatie beperken tot een enkele client door deze mee te geven: logfire.instrumenthttpx(client). Gebruik captureall=True om ook headers en bodies vast te leggen. Raadpleeg de Logfire HTTPX-documentatie voor de volledige set opties.
Bijdragen
Als je wilt bijdragen aan HTTPX2, raadpleeg dan de Contributing Guide om te leren hoe je kunt beginnen.
Afhankelijkheden
Het HTTPX2-project vertrouwt op de volgende bibliotheken:
- httpcore2: De onderliggende transportimplementatie voor httpx2.
- h11: Ondersteuning voor HTTP/1.1.
- anyio: Structured concurrency primitives, gebruikt om zowel asyncio als trio te ondersteunen.
- truststore: SSL-verificatie met gebruik van de trust store van het besturingssysteem.
- idna: Ondersteuning voor geïnternationaliseerde domeinnamen.
Daarnaast zijn er optionele installaties:
- h2: Ondersteuning voor HTTP/2. (Optioneel, via
httpx2[http2])
- socksio: SOCKS proxy ondersteuning. (Optioneel, via
httpx2[socks])
- rich: Ondersteuning voor rich terminal weergave. (Optioneel, via
httpx2[cli])
- click: Ondersteuning voor de command-line client. (Optioneel, via
httpx2[cli])
- brotli of brotlicffi: Decodering voor "brotli" gecomprimeerde responses. (Optioneel, via
httpx2[brotli])
- backports.zstd: Decodering voor "zstd" gecomprimeerde responses op Python 3.13 en lager. (Optioneel, via
httpx2[zstd]. Op Python 3.14+ wordt zstd ondersteund via de stdlib compression.zstd module indien beschikbaar; de httpx2[zstd] extra installeert dan niets.)
Erkenningen en Licentie
Een groot deel van de credits gaat naar requests voor de API-indeling die in veel van dit werk is gevolgd, evenals naar urllib3 voor veel design-inspiratie rond de netwerkdetails op een lager niveau.
HTTPX2 is code onder de BSD-licentie.
HTTPX2: Een HTTP-client van de volgende generatie voor Python
Toelichting over het project
HTTPX2 is een voortzetting van het uitstekende werk dat is gestart door @lovelydinosaur en de bredere HTTPX-community. We zijn enorm dankbaar voor alles wat er in de loop der jaren in HTTPX is gestoken; het is een fundamenteel onderdeel geworden van het moderne Python-ecosysteem, en dit project zou zonder deze basis niet bestaan.
Omdat er recentelijk beperkte activiteit was bij HTTPX zelf, neemt Pydantic het beheer over onder de naam HTTPX2. Hiermee wordt gewaarborgd dat gebruikers een betrouwbaar en onderhouden pad vooruit hebben, inclusief tijdige beveiligingsupdates voor een bibliotheek die cruciaal is voor veel productiesystemen. Ons doel is om het ontwerp van het oorspronkelijke project te eren, het stabiel te houden voor iedereen die erop vertrouwt en het zorgvuldig verder te ontwikkelen. Dank aan @lovelydinosaur en elke voormalige contributor voor het leggen van zo'n sterk fundament. 💙
Snelstart
Installeer HTTPX2 via pip:
pip install httpx2
Nu kun je aan de slag:
>>> import httpx2
>>> r = httpx2.get('https://www.example.org/')
>>> r
<Response [200 OK]>
>>> r.status_code
200
>>> r.headers['content-type']
'text/html; charset=UTF-8'
>>> r.text
'<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>...'
Alternatief kun je de command-line client gebruiken. De command-line client is een optionele afhankelijkheid:
pip install 'httpx2[cli]'
Hiermee kun je HTTPX2 rechtstreeks vanuit de opdrachtregel gebruiken:
httpx2 --help
Kenmerken
HTTPX2 bouwt voort op de gevestigde gebruiksvriendelijkheid van requests en biedt het volgende:
- Een API die grotendeels compatibel is met
requests.
- Een geïntegreerde command-line client.
- Ondersteuning voor HTTP/1.1 en HTTP/2.
- Een standaard synchrone interface, maar met asynchrone ondersteuning indien nodig.
- De mogelijkheid om verzoeken rechtstreeks naar WSGI- of ASGI-applicaties te sturen.
- Strikte timeouts overal.
- Volledig type-annotated.
- 100% testdekking.
Daarnaast bevat het alle standaardfuncties van requests:
- Internationale domeinen en URL's
- Keep-Alive & Connection Pooling
- Sessies met Cookie Persistence
- Browser-stijl SSL-verificatie
- Basis/Digest Authenticatie
- Elegante Key/Value Cookies
- Automatische decompressie
- Automatische content-decodering
- Unicode response bodies
- Multipart bestandsuploads
- HTTP(S) proxy ondersteuning
- Connection Timeouts
- Streaming downloads
- .netrc ondersteuning
- Chunked requests
Installatie
Installeer met pip:
pip install httpx2
Of, om de optionele HTTP/2-ondersteuning in te voegen, gebruik:
pip install httpx2[http2]
Documentatie
De projectdocumentatie is beschikbaar op https://httpx2.pydantic.dev/.
- Voor een overzicht van de basisprincipes, ga naar de QuickStart.
- Voor meer geavanceerde onderwerpen, zie de secties Advanced Usage, async support of HTTP/2.
- De Developer Interface biedt een uitgebreide API-referentie.
- Voor informatie over tools die integreren met HTTPX, zie Third Party Packages.
Observability met Pydantic Logfire
Installeer Logfire met HTTPX-instrumentatieondersteuning:
pip install 'logfire[httpx]'
HTTPX2 werkt direct uit de doos met Pydantic Logfire, ons observability-platform gebouwd op OpenTelemetry. Eén regel instrumenteert elk verzoek, waardoor je traces, timings en statuscodes krijgt zonder andere wijzigingen:
import logfire
import httpx2
logfire.configure()
logfire.instrument_httpx()
httpx2.get("https://pydantic.dev/")
Dit werkt op dezelfde manier voor expliciete httpx2.Client() en httpx2.AsyncClient() instanties. Je kunt de instrumentatie beperken tot een enkele client door deze mee te geven: logfire.instrumenthttpx(client). Gebruik captureall=True om ook headers en bodies vast te leggen. Raadpleeg de Logfire HTTPX-documentatie voor de volledige set opties.
Bijdragen
Als je wilt bijdragen aan HTTPX2, raadpleeg dan de Contributing Guide om te leren hoe je kunt beginnen.
Afhankelijkheden
Het HTTPX2-project vertrouwt op de volgende bibliotheken:
- httpcore2: De onderliggende transportimplementatie voor httpx2.
- h11: Ondersteuning voor HTTP/1.1.
- anyio: Structured concurrency primitives, gebruikt om zowel asyncio als trio te ondersteunen.
- truststore: SSL-verificatie met gebruik van de trust store van het besturingssysteem.
- idna: Ondersteuning voor geïnternationaliseerde domeinnamen.
Daarnaast zijn er optionele installaties:
- h2: Ondersteuning voor HTTP/2. (Optioneel, via
httpx2[http2])
- socksio: SOCKS proxy ondersteuning. (Optioneel, via
httpx2[socks])
- rich: Ondersteuning voor rich terminal weergave. (Optioneel, via
httpx2[cli])
- click: Ondersteuning voor de command-line client. (Optioneel, via
httpx2[cli])
- brotli of brotlicffi: Decodering voor "brotli" gecomprimeerde responses. (Optioneel, via
httpx2[brotli])
- backports.zstd: Decodering voor "zstd" gecomprimeerde responses op Python 3.13 en lager. (Optioneel, via
httpx2[zstd]. Op Python 3.14+ wordt zstd ondersteund via de stdlib compression.zstd module indien beschikbaar; de httpx2[zstd] extra installeert dan niets.)
Erkenningen en Licentie
Een groot deel van de credits gaat naar requests voor de API-indeling die in veel van dit werk is gevolgd, evenals naar urllib3 voor veel design-inspiratie rond de netwerkdetails op een lager niveau.
HTTPX2 is code onder de BSD-licentie.