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/


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

相关文章
|
7月前
|
XML Java 数据格式
Servlet 教程 之 Servlet 客户端 HTTP 请求 3
该教程展示了如何在Servlet中处理客户端HTTP请求,特别是获取HTTP头信息。示例代码创建了一个名为`DisplayHeader`的Servlet,它扩展了`HttpServlet`并重写了`doGet`方法。在`doGet`中,使用`HttpServletRequest`的`getHeaderNames()`遍历所有头部,显示其名称和对应值。Servlet在TomcatTest项目下,通过`web.xml`配置映射到`/TomcatTest/DisplayHeader`路径。
64 14
|
7月前
|
安全 Java 网络安全
Servlet 教程 之 Servlet 客户端 HTTP 请求 2
Servlet教程介绍了如何在Servlet中处理HTTP请求,包括获取Cookie、头信息、参数、Session等。方法如:`getCookies()`、`getAttributeNames()`、`getHeaderNames()`、`getParameterNames()`等。还能获取身份验证类型、字符编码、MIME类型、请求方法、远程用户信息、URL路径、安全通道状态以及请求内容长度等。此外,可通过`getSession()`创建或获取Session,并以`Map`形式获取参数。
65 8
|
2月前
使用Netty实现文件传输的HTTP服务器和客户端
本文通过详细的代码示例,展示了如何使用Netty框架实现一个文件传输的HTTP服务器和客户端,包括服务端的文件处理和客户端的文件请求与接收。
75 1
使用Netty实现文件传输的HTTP服务器和客户端
|
4月前
|
开发者 Python
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
102 1
|
5月前
|
Go 开发者
golang的http客户端封装
golang的http客户端封装
101 0
|
6月前
|
JSON 数据格式 Python
Python 的 requests 库是一个强大的 HTTP 客户端库,用于发送各种类型的 HTTP 请求
【6月更文挑战第15天】Python的requests库简化了HTTP请求。安装后,使用`requests.get()`发送GET请求,检查`status_code`为200表示成功。类似地,`requests.post()`用于POST请求,需提供JSON数据和`Content-Type`头。
63 6
|
6月前
|
Java
原生Feign使用详解(HTTP客户端)(二)
原生Feign使用详解(HTTP客户端)(二)
121 1
|
6月前
|
JSON Java API
原生Feign使用详解(HTTP客户端)(一)
原生Feign使用详解(HTTP客户端)(一)
247 1
|
6月前
|
移动开发 Java
Java Socket编程 - 基于Socket实现HTTP下载客户端
Java Socket编程 - 基于Socket实现HTTP下载客户端
37 1
|
6月前
|
数据采集 Java API
Java HTTP客户端工具的演变之路
Java HTTP客户端工具的演变之路

热门文章

最新文章