前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >httpx比requests更加优秀

httpx比requests更加优秀

作者头像
Python研究所
发布2022-06-17 09:01:38
8170
发布2022-06-17 09:01:38
举报
文章被收录于专栏:大飞的部落阁

前言

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

什么是 httpx

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

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

安装和使用

安装

代码语言:javascript
复制
pip install httpx

get

代码语言:javascript
复制
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

代码语言:javascript
复制
# 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

代码语言:javascript
复制
# 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

代码语言:javascript
复制
# 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 方法拿到字典对象,从而方便的进行数据处理。

代码语言:javascript
复制
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 来处理图片的二进制内容。

代码语言:javascript
复制
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 是一款值得学习的优秀软件。

官方文档

https://www.python-httpx.org/

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 什么是 httpx
  • 安装和使用
    • 安装
      • get
        • post
          • put
            • delete
            • 高级用法
              • 处理 json
                • 处理二进制
                  • 官方文档
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档