httpx | 优秀的HTTP客户端

简介: httpx | 优秀的HTTP客户端

前言


相信你和我一样,在日常的工作中,requests 库被广泛使用。今天我要为你介绍一款号称下一代全功能的 HTTP 客户端:httpx


什么是 httpx


httpxPython3 的全功能客户端,支持同步&异步 API,同时支持 HTTP/1.1HTTP/2


相比其他 HTTP 库,httpx 具有更加易用的接口,更加强大的功能,是未来 Python 开发者的不二选择。


安装和使用


安装


pip install httpx
复制代码


get


import httpx
# get obj
res = httpx.get('https://www.baidu.com')
print(res,res.status_code)
# response content,text
print(res.content,res.text)
复制代码


网络异常,图片无法展示
|


对于 contenttext 的去区别,从图中可以直观的看到,content 的类型为 bytes,而 text 的类型为 str


post


# post obj
res = httpx.post('http://127.0.0.1:4523/mock/351132/pet',data={'name':'Python测试和开发','status':'Python_Lab'})
print(res.text,type(res.content),res.status_code,res.encoding)
复制代码


网络异常,图片无法展示
|


因为我们使用了 mock server,所以接口返回的数据可能和我们请求的不一致。


put


# put pbj
res = httpx.put('http://127.0.0.1:4523/mock/351132/pet',params={'apifoxResponseId':'321249'})
print(res.status_code,res.encoding,res.text)
复制代码


网络异常,图片无法展示
|


delete


# delete obj
res = httpx.delete('http://127.0.0.1:4523/mock/351132/pet/1')
print(res.status_code,res.encoding,res.text)
复制代码


网络异常,图片无法展示
|


高级用法


处理 json


通常对于 content 返回是 bytes 或者 str 的数据,我们需要单独使用 json 模块进行数据转换,但是现在我们可以直接使用 httpx 为我们提供的 json 方法拿到字典对象,从而方便的进行数据处理。


import httpx
# json
res = httpx.get('https://getman.cn/mock/post')
print(type(res.text),type(res.content),type(res.json()),res.json())
复制代码


网络异常,图片无法展示
|


处理二进制


当我们需要下载图片的时候,通常我们是将 content 的内容分块读取,然后写入文件。但是 httpx 建议我们使用 pillowio 来处理图片的二进制内容。


import httpx
from PIL import Image
from io import BytesIO
# bytes
res = httpx.get('http://localhost:8765/um/imgs/')
print(res.status_code)
ff = Image.open(BytesIO(res.content))
ff.save('xx.png')
复制代码


网络异常,图片无法展示
|


httpx 支持所有 requestsraise_for_status()等所有方法,还新增了部分特性,例如 httpx.codes.OK 代替 200 响应码的短语等动能。总之,httpx 是一款值得学习的优秀软件。


官方文档


www.python-httpx.org/


以上就是今天的全部内容了,感谢您的阅读,我们下节再会。

相关文章
|
17天前
|
XML Java 数据格式
Servlet 教程 之 Servlet 客户端 HTTP 请求 3
该教程展示了如何在Servlet中处理客户端HTTP请求,特别是获取HTTP头信息。示例代码创建了一个名为`DisplayHeader`的Servlet,它扩展了`HttpServlet`并重写了`doGet`方法。在`doGet`中,使用`HttpServletRequest`的`getHeaderNames()`遍历所有头部,显示其名称和对应值。Servlet在TomcatTest项目下,通过`web.xml`配置映射到`/TomcatTest/DisplayHeader`路径。
34 14
【计算机网络】如何让客户端构造一个HTTP请求-2
【计算机网络】如何让客户端构造一个HTTP请求-2
【计算机网络】如何让客户端构造一个HTTP请求-2
|
17天前
|
存储 前端开发 JavaScript
【计算机网络】如何让客户端构造一个HTTP请求-1
【计算机网络】如何让客户端构造一个HTTP请求-1
【计算机网络】如何让客户端构造一个HTTP请求-1
|
17天前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
32 0
|
17天前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)(上)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
32 0
|
17天前
|
安全 Java 网络安全
Servlet 教程 之 Servlet 客户端 HTTP 请求 2
Servlet教程介绍了如何在Servlet中处理HTTP请求,包括获取Cookie、头信息、参数、Session等。方法如:`getCookies()`、`getAttributeNames()`、`getHeaderNames()`、`getParameterNames()`等。还能获取身份验证类型、字符编码、MIME类型、请求方法、远程用户信息、URL路径、安全通道状态以及请求内容长度等。此外,可通过`getSession()`创建或获取Session,并以`Map`形式获取参数。
28 8
|
9天前
|
存储 缓存
ETag的值是如何在HTTP响应中传递给客户端的
ETag的值是如何在HTTP响应中传递给客户端的
|
17天前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)(下)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
32 0
|
17天前
|
JSON 数据格式 Python
Python 的 requests 库是一个强大的 HTTP 客户端库,用于发送各种类型的 HTTP 请求
【5月更文挑战第9天】`requests` 库是 Python 中用于HTTP请求的强大工具。要开始使用,需通过 `pip install requests` 进行安装。发送GET请求可使用 `requests.get(url)`,而POST请求则需结合 `json.dumps(data)` 以JSON格式发送数据。PUT和DELETE请求类似,分别调用 `requests.put()` 和 `requests.delete()`。
36 2
|
17天前
|
JSON 编解码 Go
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第25天】Go语言`net/http`包提供HTTP客户端和服务器功能,简化高性能网络应用开发。本文探讨如何发起HTTP请求,常见问题及解决策略。示例展示GET和POST请求的实现。注意响应体关闭、错误处理、内容类型设置、超时管理和并发控制。最佳实践包括重用`http.Client`,使用`context.Context`,处理JSON以及记录错误日志。通过实践这些技巧,提升HTTP编程技能。
29 1