当前位置: 首页 > news >正文

HTTPX-用于Python的下一代HTTP客户端

1、前言

在使用 Python 进行接口自动化时,大多数都会使用 requests 模块,requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。

本篇将介绍 Python 的下一代 HTTP 客户端 - HTTPX

2、简介

HTTPX - 用于 Python 的下一代 HTTP 客户端。

HTTPX 是 Python 3 的一个功能齐全的 HTTP 客户端,它提供同步和异步 API,并支持 HTTP/1.1 和 HTTP/2。

功能:

果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386    

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337

1、HTTPX 建立在完善的请求可用性之上,并为您提供:

(1)广泛兼容请求的 API。

(2)标准同步接口,但如果需要,可以支持异步。

(3)HTTP/1.1 和 HTTP/2 的支持。

(4)能够直接向 WSGI 应用程序或 ASGI 应用程序发出请求。

(5)到处都有严格的超时。

(6)完全键入注释。

(7)100%测试覆盖率。

2、请求的所有标准功能:

(1)国际域名 和 URL

(2)保持活动连接池

(3)具有 Cookie 持久性的会话

(4)浏览器式 SSL 验证

(5)基本/摘要式 身份验证

(6)优雅的 键/值 Cookie

(7)自动解压缩

(8)自动内容解码

(9)Unicode 响应体

(10)多部分文件上传

(11)支持 HTTP(S) 代理

(12)连接超时

(13)流媒体下载

(14)支持 .netrc

(15)分块请求

官方网址:

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

github地址:

https://github.com/encode/httpx/

安装:

1、使用 pip 安装 HTTPX

pip install httpx

2、使用 pip 安装 HTTPX(支持可选的 HTTP/2)

pip install httpx[http2]

3、使用 pip 安装 HTTPX(支持可选的 brotli 解码器)

pip install httpx[brotli]

4、使用 pip 安装 HTTPX 的命令行客户端(是一个可选的依赖项)

pip install 'httpx[cli]'

打开命令行可直接使用 HTTPX。

3、快速上手

1、GET 请求:

(1)代码请求:

使用 Postman 请求。

使用 HTTPX 请求。 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import httpx
r = httpx.get('https://httpbin.org/get')
print(r)
print(r.status_code)
print(r.headers['content-type'])
print(r.text)

返回结果。

(2)命令行请求:

 2、GET+Params+Headers 请求:

#!/usr/bin/env python
# -*- coding: utf-8 -*-import httpx
url = 'https://httpbin.org/get'
params = {'key1': 'value1', 'key2': 'value2'}
headers = {'user-agent': 'my-app/0.0.1'}
r = httpx.get(url, params=params, headers=headers)
print(r.text)

返回结果。

3、POST+JSON+Headers 请求:

#!/usr/bin/env python
# -*- coding: utf-8 -*-import httpx
url = 'https://httpbin.org/post'
data = {'integer': 123456, 'boolean': True, 'list': ['a', 'b', 'c', 'd']}
headers = {'Content-Type': 'application/json'}
r = httpx.post(url, json=data, headers=headers)
print(r.text)

 返回结果。

4、POST+Form表单 请求:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import httpx
url = 'https://httpbin.org/post'
data = {'key1': 'value1', 'key2': 'value2'}
r = httpx.post(url, data=data)
print(r.text)

返回结果。

5、POST+文件 请求:

#!/usr/bin/env python
# -*- coding: utf-8 -*-import httpx
url = 'https://httpbin.org/post'
data = {'message': 'AllTests软件测试'}
files = {'file': open('/Users/wangmeng/Desktop/test.xlsx', 'rb')}
r = httpx.post(url, data=data, files=files)
print(r.text)

 返回结果。

6、超时 请求:

#!/usr/bin/env python
# -*- coding: utf-8 -*-import httpx
r = httpx.get('https://httpbin.org/get', timeout=10)
print(r.text)

 7、PUT、DELETE、HEAD和OPTIONS 请求:

#!/usr/bin/env python
# -*- coding: utf-8 -*-import httpx
r = httpx.put('https://httpbin.org/put', data={'key1': 'value1'})
r = httpx.delete('https://httpbin.org/delete')
r = httpx.head('https://httpbin.org/get')
r = httpx.options('https://httpbin.org/get')

8、异步 请求:

要进行异步请求,需要一个 AsyncClient。

#!/usr/bin/env python
# -*- coding: utf-8 -*-import httpx
import asyncioasync def demo():async with httpx.AsyncClient() as client:r = await client.get('https://httpbin.org/get')print(r.text)asyncio.run(demo())

返回结果。

异步请求内容:

AsyncClient.get(url, ...)
AsyncClient.options(url, ...)
AsyncClient.head(url, ...)
AsyncClient.post(url, ...)
AsyncClient.put(url, ...)
AsyncClient.patch(url, ...)
AsyncClient.delete(url, ...)
AsyncClient.request(method, url, ...)
AsyncClient.send(request, ...)

 

http://www.lryc.cn/news/174740.html

相关文章:

  • [LLM+AIGC] 01.应用篇之中文ChatGPT初探及利用ChatGPT润色论文对比浅析(文心一言 | 讯飞星火)
  • OCR -- 文本检测
  • 【系统架构】软件可靠性基础知识
  • 相机Camera
  • 洛谷P8815:逻辑表达式 ← CSP-J 2022 复赛第3题
  • ElementUI实现登录注册+axios全局配置+CORS跨域
  • Vue 07 Vue中的数据代理
  • Foxit PDF SDK Windows 9.1 Crack
  • UG NX二次开发(C++)-采用NXOpen方法计算体的质心
  • Java代码审计17之fastjson反序列化漏洞(2)
  • Fork/Join 框架是干什么的?
  • 电子信息工程专业课复习知识点总结:(五)通信原理
  • LeetCode算法二叉树—二叉树的中序遍历
  • ubuntu 18.04 中 eBPF samples/bpf 编译
  • 新版Chromedriver在哪下载(Chromedriver 116.0.5845.188的寻找之旅)
  • React基础知识点
  • linux用户和权限命令学习记录
  • React(react18)中组件通信05——redux ➕ react-redux(含数据共享)
  • 字符函数和字符串函数(1)
  • Visual Studio Code从GIT拉取vue项目并运行
  • 【知识分享】Java获取全年每个月的有几周且每周是几号到几号
  • 学信息系统项目管理师第4版系列11_信息安全管理
  • sql注入原理分析
  • Mac磁盘空间满了怎么办?Mac如何清理磁盘空间
  • 能ping通但无法上网的问题
  • 仿制 Google Chrome 的恐龙小游戏
  • Redis面试题(五)
  • 组队竞赛(int溢出问题)
  • Swift SwiftUI 隐藏键盘
  • Python与数据分析--Pandas-1