Skip to content

Requests but with HTTP/3, HTTP/2, Multiplexed Connections, System CAs, Certificate Revocation, DNS over HTTPS / TLS / QUIC or UDP, Async, DNSSEC, and (much) pain removed!

License

Notifications You must be signed in to change notification settings

AtomicRobotMan0101/niquests

 
 

Repository files navigation

Niquests Logo

Niquests is a simple, yet elegant, HTTP library. It is a drop-in replacement for Requests, which is under feature freeze.

Niquests, is the “Safest, Fastest*, Easiest, and Most advanced” Python HTTP Client. Production Ready!

✔️ Try before you switch: See Multiplexed in Action
📖 See why you should switch: Read about 10 reasons why

>>> import niquests
>>> s = niquests.Session(resolver="doh+google:https://", multiplexed=True)
>>> r = s.get('https://pie.dev/basic-auth/user/pass', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.oheaders.content_type.charset
'utf8'
>>> r.encoding
'utf-8'
>>> r.text
'{"authenticated": true, ...'
>>> r.json()
{'authenticated': True, ...}
>>> r
<Response HTTP/3 [200]>
>>> r.ocsp_verified
True
>>> r.conn_info.established_latency
datetime.timedelta(microseconds=38)

or using async/await! you'll need to enclose the code within proper async function, see the docs for more.

import niquests
>>> s = niquests.AsyncSession(resolver="doh+google:https://")
>>> r = await s.get('https://pie.dev/basic-auth/user/pass', auth=('user', 'pass'), stream=True)
>>> r
<Response HTTP/3 [200]>
>>> await r.json()
{'authenticated': True, ...}

Niquests allows you to send HTTP requests extremely easily. There’s no need to manually add query strings to your URLs, or to form-encode your PUT & POST data — just use the json method!

Downloads Supported Versions

Installing Niquests and Supported Versions

Niquests is available on PyPI:

$ python -m pip install niquests

Niquests officially supports Python or PyPy 3.7+.

Supported Features & Best–Practices

Niquests is ready for the demands of building scalable, robust and reliable HTTP–speaking applications.

  • DNS over HTTPS, DNS over QUIC, DNS over TLS, and DNS over UDP
  • Automatic Content Decompression and Decoding
  • OS truststore by default, no more certifi!
  • OCSP Certificate Revocation Verification
  • Advanced connection timings inspection
  • In-memory certificates (CAs, and mTLS)
  • Browser-style TLS/SSL Verification
  • Sessions with Cookie Persistence
  • Keep-Alive & Connection Pooling
  • International Domains and URLs
  • Automatic honoring of .netrc
  • Basic & Digest Authentication
  • Familiar dict–like Cookies
  • Network settings fine-tuning
  • Object-oriented headers
  • Multi-part File Uploads
  • Chunked HTTP Requests
  • Fully type-annotated!
  • SOCKS Proxy Support
  • Connection Timeouts
  • Streaming Downloads
  • HTTP/2 by default
  • HTTP/3 over QUIC
  • Multiplexed!
  • Thread-safe!
  • DNSSEC!
  • Async!

Need something more? Create an issue, we listen.

Why did we pursue this?

For many years now, Requests has been frozen. Being left in a vegetative state and not evolving, this blocked millions of developers from using more advanced features.

We don't have to reinvent the wheel all over again, HTTP client Requests is well established and really pleasant in its usage. We believe that Requests has the most inclusive and developer friendly interfaces. We intend to keep it that way. As long as we can, long live Niquests!

How about a nice refresher with a mere CTRL+H import requests to import niquests as requests ?

💼 For Enterprise

Professional support for Niquests is available as part of the Tidelift Subscription. Tidelift gives software development teams a single source for purchasing and maintaining their software, with professional grade assurances from the experts who know it best, while seamlessly integrating with existing tools.


(*) performance measured when leveraging a multiplexed connection with or without uses of any form of concurrency as of november 2023. The research compared httpx, requests, aiohttp against niquests.


Kenneth Reitz

About

Requests but with HTTP/3, HTTP/2, Multiplexed Connections, System CAs, Certificate Revocation, DNS over HTTPS / TLS / QUIC or UDP, Async, DNSSEC, and (much) pain removed!

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.9%
  • Makefile 0.1%