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

news2025/1/8 4:37:57

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 asyncio

async 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.coloradmin.cn/o/1034537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux学习-HIS系统部署(1)

Git安装 #安装中文支持(选做) [rootProgramer ~]# echo $LANG #查看当前系统语言及编码 en_US.UTF-8 [rootProgramer ~]# yum -y install langpacks-zh_CN.noarch #安装中文支持 [rootProgramer ~]# vim /etc/locale.co…

山西电力市场日前价格预测【2023-09-24】

日前价格预测 预测说明: 如上图所示,预测明日(2023-09-24)山西电力市场全天平均日前电价为496.09元/MWh。其中,最高日前电价为705.54元/MWh,预计出现在14: 30。最低日前电价为333.70元/MWh,预计…

竞赛选题 基于深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的视频多目标跟踪实现 …

C语言学习系列—>一篇带你了解结构体

文章目录 前言结构体类型概述声明特殊声明结构体的自引用结构体变量的创建和初始化结构成员访问操作符结构体内存对齐内存对齐的原因修改默认对齐方式结构体传参 前言 结构体是C语言中自定义类型之一,当内置类型不能满足的时候,我们就可以使用自定义类型…

怎样快速提取视频中的背景音乐和人声?

人声分离的需求在现在还是比较多的,例如做影视混剪、做配音等,都需要将视频或音频中的人声分离开,今天就来教大家如何快速提取视频中的背景音乐和人声! 第一步:打开“音分轨”人声分离APP,点击主页“短视频…

自己写过比较蠢的代码:从失败中学习的经验

文章目录 引言1. 代码没有注释2. 长函数和复杂逻辑3. 不恰当的变量名4. 重复的代码5. 不适当的异常处理6. 硬编码的敏感信息7. 没有单元测试结论 🎉 自己写过比较蠢的代码:从失败中学习的经验 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页&a…

以太坊智能合约的历史里程碑: 从DAO到数据隐私的技术演进

文章目录 系列文章目录前言一、时间线 项目介绍总结 前言 在短短的几年内,以太坊不仅成为了去中心化应用和智能合约的主导平台,而且也见证了区块链技术和应用的多次重大革命。本文详细回顾了自2016年至今,以太坊生态所经历的几个关键时刻与技…

天津乾瑞晟达积极加大研发投入 满足行业发展需求

天津乾瑞晟达新能源科技有限公司多年以来,坚持新能源汽车零部件的研发、生产以及销售等综合业务,成为了一家有实力的综合制造企业。为了满足行业发展需求,该公司积极加大研发投入,持续推动科技创新。 根据最新的财务报告显示,天津乾瑞晟达公司为了研发新的项目,确保可以使项目…

Spring面试题15:Spring支持几种bean的作用域?singleton、prototype、request的区别是什么?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring支持几种bean的作用域? Spring支持以下几种Bean的作用域: Singleton(单例):这是Spring默认的作用域。使用@Scope(“singleton”)注解或…

精品Python宠物领养网站系统失物招领

《[含文档PPT源码等]精品基于Python实现的宠物网系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术:JavaScript、VUE.js&…

鲜花店经营配送小程序商城的作用是什么?

鲜花在人们日常生活中的应用度非常高,在同城场景中也有大量从业者,对商家们来说,其主要生意来源于本地,当然也有批发或同时经营玩具类的商家会有外地配送属性。 所谓客户在哪里,商家就应在哪里,如今互联网…

随笔-服务器运维常用的命令

查询服务器的目录下,所有的文件大小 // 查看当前目录下,深度为3的所有目录内容大小 du -h –max-depth3 *// 查看目录下文件夹大小写,并按照大小排序 du -sh * | sort -rh查看当前目录下文件的大小 // 查看文件大小 ll -h3. 清空文件内容 …

【从0学习Solidity】22. Call函数详解

【从0学习Solidity】22. Call函数详解 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索…

kux转mp4,实测有效,有图有真相

kux转mp4 kux视频格式真坑爹,我在MAC下载优酷,居然无法播放这种格式,这就是优酷专属的下载格式啊,真不是一般烦人。故而切换到window系统,实验了一下午,找了所有单独的第三方软件,下载的时候一个…

倒置字符串(牛客)

一、题目 二、代码 #include <iostream> #include<string> using namespace std;int main() {string s;getline(cin, s);string s2;int i s.length() - 1;int prev i;int next 0;while (i > 0 && prev > 0) { //从字符串的最后往前遍历if (s[pre…

排序子序列(牛客)

目录 一、题目 二、代码 &#xff08;一&#xff09;时间复杂度过高&#xff08;通过70%&#xff09; &#xff08;二&#xff09;改进 一、题目 二、代码 &#xff08;一&#xff09;时间复杂度过高&#xff08;通过70%&#xff09; #include <iostream> #includ…

C语言内功修炼--指针详讲(进阶)

前言&#xff1a; 通过之前的指针初阶讲解&#xff0c;相信大家已经大概明白了指针的概念以及基本用法&#xff0c;这里我再来整理一下&#xff1a; 1.指针就是一个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识着内存的一块空间。 2.指针具有类型&#xff0c;指针…

单元测试的重要性

前言 在日常生活中&#xff0c;单元测试无论是对软件测试人员还是开发人员&#xff0c;都扮演着重要的角色。这主要是因为&#xff0c;单元测试在开发阶段&#xff0c;可以确保每个组件和程序都能够正常的运行。 很多开发人员都讨厌编写单元测试&#xff0c;但是它可以在开发…

变量使用、

六&#xff1a;变量使用 1.语法格式 变量调用语法&#xff1a; {{ var_name }} 案例&#xff1a; 通过命令行传递变量&#xff1a;&#xff08;通过--extra-vars或-e选项来传递keyvalue变量&#xff09; vim var.yaml 传递字典(同时传递多个变量) vim var-1.yaml 案例二…

竞赛 基于深度学习的行人重识别(person reid)

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的行人重识别 该项目较为新颖&#xff0c;适合…