Jan-06-2024, 03:05 PM
Hello,
I am proposing the community to discover a HTTP client that ideally is a drop-in replacement of the popular Requests.
Also opening that discussions to listen at what you would expect / need from such a client nowadays.
It is the only client to truly leverage HTTP/2 and 3 capabilities. And you can migrate your actual code base without effort.
Source: https://github.com/jawah/niquests
Here a partial extract of its features:
I am asking to the community to interact with this project to increase its visibility if you will. It would be appreciated.
Then, the open subject is: "What are the pains you encounter? How would do have them resolved?"
Regards,
I am proposing the community to discover a HTTP client that ideally is a drop-in replacement of the popular Requests.
Also opening that discussions to listen at what you would expect / need from such a client nowadays.
It is the only client to truly leverage HTTP/2 and 3 capabilities. And you can migrate your actual code base without effort.
Source: https://github.com/jawah/niquests
Here a partial extract of its features:
- 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!
>>> import niquests >>> s = niquests.Session(resolver="doh+google://", 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)This project has potential, so I like to think.
I am asking to the community to interact with this project to increase its visibility if you will. It would be appreciated.
Then, the open subject is: "What are the pains you encounter? How would do have them resolved?"
Regards,