前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Niquests: 最简单和先进的Python HTTP 客户端,完美替换Requests

Niquests: 最简单和先进的Python HTTP 客户端,完美替换Requests

原创
作者头像
luckpunk
发布2025-01-27 09:07:48
发布2025-01-27 09:07:48
9100
代码可运行
举报
文章被收录于专栏:Python每日一库Python每日一库
运行总次数:0
代码可运行

什么是Niquests

Niquests 是一个简单而优雅的 HTTP 客户端, 简单说它是 Requests 的直接替代品。 因为多年来Requests 功能一直处于停滞不前的状态,由于不前进的状态并且没有发展,这阻止了数百万开发人员使用更高级的功能,所以就有了Niquests, Niquests 是唯一能够自动提供 HTTP/1.1、HTTP/2 和 HTTP/3 的 HTTP 客户端, 该项目深入研究了协议(早期响应、尾部标头等)和所有相关的网络基本要素(如 DNS-over-HTTPS、高级性能计量等,而且Niquests是最安全,最快,最简单和最先进的Python HTTP 客户端。

安装

Niquests 在 PyPI 上可用, Niquests 官方支持 Python 或 PyPy 3.7+。

代码语言:javascript
代码运行次数:0
运行
复制
$ python -m pip install niquests

基本使用

代码语言:javascript
代码运行次数:0
运行
复制
>>> import niquests
>>> s = niquests.Session(resolver="doh+google://", multiplexed=True)
>>> r = s.get('https://one.one.one.one')
>>> r
<ResponsePromise HTTP/3>
>>> 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)

也可以使用async/await

代码语言:javascript
代码运行次数:0
运行
复制
import niquests
import asyncio

async def main() -> None:
    async with niquests.AsyncSession(resolver="doh+google://") as s:
        r = await s.get('https://one.one.one.one', stream=True)
        print(r)  # Output: <Response HTTP/3 [200]>
        payload = await r.json()
        print(payload)  # Output: {'authenticated': True, ...}

asyncio.run(main())

Niquests 允许我们非常轻松地发送 HTTP 请求,无需手动向你的URL添加查询字符串,也不需要对你的数据进行形式编码 - 只需使用该方法即可! 另外该项目不需要任何编译工具链,如果我们平台可以原生支持 HTTP/3 支持,则不会强制执行和安装 HTTP/3 支持。

最后再罗列下Niquests的全面的功能。

支持的功能和最佳实践

Niquests 已准备好满足构建可扩展、强大且可靠的 HTTP 应用程序的需求。

  • • 基于 HTTPS 的 DNS、基于 QUIC 的 DNS、基于 TLS 的 DNS 和基于 UDP 的 DNS
  • • 自动内容解压缩和解码
  • • OS truststore 默认,不再有 certifi!
  • • OCSP 证书吊销验证
  • • 高级连接时序检查
  • • 内存证书(CA 和 mTLS)
  • • 浏览器风格的 TLS/SSL 验证
  • • 具有 Cookie 持久性的会话
  • • Keep-Alive & 连接池
  • • 国际域和 URL
  • • 自动遵守.netrc
  • • 基本和摘要认证
  • • 熟悉的 Cookiedict
  • • 网络设置微调
  • • 具有先验知识的 HTTP/2
  • • 面向对象的标头
  • • 多部分文件上传
  • • 后量子安全性
  • • 分块 HTTP 请求
  • • 完全类型注释
  • • SOCKS 代理支持
  • • 连接超时
  • • 流式下载
  • • 默认为 HTTP/2
  • • 基于 QUIC 的 HTTP/3
  • • 早期响应
  • • 快乐的眼球
  • • 复 用!
  • • 线程安全!
  • • WebSocket的!
  • • Trailers
  • • DNSSEC!
  • • 异步!
  • • SSE!

看完上面的内容感觉功能真是全,可以完美替换requests了,还不去赶快试试。

https://niquests.readthedocs.io/en/stable/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Niquests
  • 安装
  • 基本使用
  • 支持的功能和最佳实践
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档