返回顶部
首页 > 资讯 > 后端开发 > Python >python使用requests模块请求http接口
  • 710
分享到

python使用requests模块请求http接口

pythonhttp 2023-09-20 19:09:44 710人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录 Python requests 模块requests常用参数及响应内容安装及导入requests模块HTTP 请求方法GET 请求POST 请求HTTP状态码postman生成pytho

目录

python requests 模块

Python requests 是一个常用的 Http 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。requests 模块比 urllib 模块更简洁。使用 requests 发送 HTTP 请求需要先导入 requests 模块,导入后就可以使用 requests 提供的方法向指定 URL 发送 HTTP 请求。

requests常用参数及响应内容

  1. requests常用参数
参数说明
method请求方式: get、post、put、delete 等
url接口请求地址
params请求数据中的链接参数,例如 get 的请求参数都是在 url 地址中
data请求数据
JSON接口常见的数据请求格式
headers请求头信息
cookie保存的用户登录信息,比如做一些充值功能,但是需要用户已经登录,需要 cookie 信息的请求信息传输
file接口中需上传的文件
timeout超时处理 proxys 设置代理
stream文件下载功能,通过请求方式下载文件
  1. requests响应内容
参数说明
r.encoding获取当前的编码
r.text返回响应的内容,unicode 类型数据
r.cookies返回cookie
r.status_code返回 http 的状态码,比如 404 和 200(200 是 OK,404 是 Not Found)
r.headers接口常见的数据请求格式
headers以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
r.json()返回结果的 JSON 对象 (结果需要以 JSON 格式编写的,否则会引发错误)
r.content返回响应的内容,以字节为单位

安装及导入requests模块

# 安装 requests 模块# pip install requests# 导入 requests 包import requests

HTTP 请求方法

方法描述
GET请求指定的页面信息,并返回实体主体
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改
PUT从客户端向服务器传送的数据取代指定的文档的内容
DELETE请求服务器删除指定的页面
HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器
OPTioNS允许客户端查看服务器的性能
TRACE回复服务器收到的请求,主要用于测试或诊断
PATCH对 PUT 方法的补充,用来对已知资源进行局部更新

GET 请求

requests.get(url, params=None, **kwargs)

url: 获取页面的url链接
params: url中的额外参数,字典或字节流格式,可选
kwargs: 可选参数

url格式:http://ip:port/test?key1=value1&key2=value2
接口与参数之间用?链接,参数用key=value的形式表示,多个参数用&符号链接
传参数用字典类型:params={key1: value1, key2: value2}

: 如果GET请求参数中包含汉字,常会遇到编码错误
主要原因:http协议对URL参数的编码要求是ASCII字符集,汉字是UTF-8。在发送时要进行两次编码才能将汉字转为ASCII字节码,接收方同样也要进行两次解码,才能正确地还原汉字。
解决方法:python 内置库 urllib 提供了相应命令,可以将汉字转为ASCII编码。
编码: urllib.parse.urlencode(dic)
解码: urllib.parse.unquote(str)

get方法示例

import requestsurl = "http://192.168.1.30::3333/demo/"dic = {'key': keyWord }headers = {'Authorization': 'Bearer 111'}param = urllib.parse.urlencode(dic)    #包含汉字response = requests.get(url, params=param, headers=headers)print(response.text)    # 响应内容的文本格式:response.textprint(response.content)    # 响应内容的二进制格式: response.contentprint(response.json())    # 如果响应内容是json格式,可以用response.json()方法转换成 dict类型

POST 请求

POST 请求与GET请求不同的是, POST 请求参数是放在 request body 里发送的。

import requestsimport jsonurl = "http://192.168.1.30::3333/demo/"# from-data形式1payload = {'key1': 'value1','key2': 'value2'}files=[  ('image',('111.jpg',open('/D:/111.jpg','rb'),'image/jpeg'))]headers = {}response = requests.post(url, headers=headers, data=payload, files=files)# from-data形式2payload = {"key1": (None, 'value1'), "key2": (None, 'value2'), "Image": ('111.jpg', open('/D:/111.jpg', "rb"), "image/jpeg")}headers = {}response = requests.post(url, headers=headers, files=payload)# x-www-fORM-urlencoded形式1 简单键值对参数payload = 'key1=value1&key2=value2'headers = {  'Content-Type': 'application/x-www-form-urlencoded'}response = requests.post(url, headers=headers, data=payload)# x-www-form-urlencoded形式2 复合值参数dic = {"key1": 'value1', "key2": 'value2'}data = {"params": json.dumps(dic)}headers = {  'Content-Type': 'application/x-www-form-urlencoded'}response = requests.post(url, headers=headers, data=data)# json形式1data={"key1": 'value1', "key2": 'value2'}response = requests.post(url, json=data)# json形式2header={'content-type':'application/json'}data={"key1": 'value1', "key2": 'value2'}response = requests.post(url, data=json.dumps(data))print(response.text)

POST 请求还可以设置 cookie, header 等信息,具体可以参考postman操作方式。
其它请求消息, PUT与 POST类似, DELETE与GET类似。

content-type 参数说明

语法格式:type/subtype
type :数据资源的大类,如 text (文本类型), video(视频类型)等
subtype:资源子类,如,对于 text类,subtype 可能是 plain,csv 或者html

参数说明
application/json传json数据
application/x-www-form-urlencoded提交表单默认的content-type设置, 对应form属性为 enctype
multipart/form-data用于 form 上传文件
text/csv传csv
text/html传网页
text/plain text/xml传文本
image/jpeg传图片
video/mp4传MP4视频

HTTP状态码

HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:

分类描述
1**信息响应,服务器收到请求,需要请求者继续执行操作
2**成功响应,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

状态码列表:

状态码描述
100继续。客户端应继续其请求
101切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
102WEBDAV(RFC 2518)扩展的状态码,代表处理将被继续执行
200请求成功。一般用于GET与POST请求
201已创建。成功请求并创建了新的资源
202已接受。已经接受请求,但未处理完成
203非授权信息。请求成功,但返回的meta信息不在原始的服务器,而是一个副本
204无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206部分内容。服务器成功处理了部分GET请求
208已经报告。一个DAV的绑定成员被前一个请求枚举,并且没有被再一次包括
226服务器已经满足了请求所要的资源,并且响应是一个或者多个实例操作应用于当前实例的结果
300多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303查看其它地址。与301类似。使用GET和POST请求查看
304未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305使用代理。所请求的资源必须通过代理访问
306已经被废弃的HTTP状态码
307临时重定向。与302类似。使用GET请求重定向
308永久转移。这个请求和以后的请求都应该被另一个URI地址重新发送。307、308和302、301有相同的表现,但是不允许HTTP方法改变。例如,请求表单到一个永久转移的资源将会继续顺利地执行
400错误请求。 服务器不理解请求的语法
401未授权。 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应
402该状态码是为了将来可能的需求而预留的
403禁止。 服务器拒绝请求
404未找到。 服务器找不到请求的网页
405方法禁用。 禁用请求中指定的方法
406不接受。无法使用请求的内容特性响应请求的网页
407需要代理授权。此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理
408请求超时。 服务器等候请求时发生超时
409冲突。 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息
410已删除。如果请求的资源已永久删除,服务器就会返回此响应
411需要有效长度。服务器不接受不含有效内容长度标头字段的请求
412未满足前提条件。服务器未满足请求者在请求中设置的其中一个前提条件
413请求实体过大。 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力
414请求的 URI 过长。请求的 URI(通常为网址)过长,服务器无法处理
415不支持的媒体类型。请求的格式不受请求页面的支持
416请求范围不符合要求。如果页面无法提供请求的范围,则服务器会返回此状态代码
417未满足期望值。服务器未满足"期望"请求标头字段的要求
500服务器内部错误。服务器遇到错误,无法完成请求
501尚未实施。服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码
502错误网关。服务器作为网关或代理,从上游服务器收到无效响应
503服务不可用。服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态
504网关超时。服务器作为网关或代理,但是没有及时从上游服务器收到请求
505HTTP 版本不受支持。服务器不支持请求中所用的 HTTP 协议版本

postman生成python请求代码

  1. 打开Postman软件,点击"+"号新建一个请求;
    在这里插入图片描述
  2. 选择对应请求方式,url 地址,请求参数,点击 “Send” 发送请求;
    在这里插入图片描述
  3. 在页面右侧找到 code snippet 图标,点击进去;
    在这里插入图片描述
  4. 下滑选择"Python-Request",则会生成想要的示例代码。
    在这里插入图片描述

来源地址:https://blog.csdn.net/GY_1202/article/details/131146902

--结束END--

本文标题: python使用requests模块请求http接口

本文链接: https://lsjlt.com/news/413226.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python使用requests模块请求http接口
    目录 Python requests 模块requests常用参数及响应内容安装及导入requests模块HTTP 请求方法GET 请求POST 请求HTTP状态码postman生成pytho...
    99+
    2023-09-20
    python http
  • python接口自动化使用requests库发送http请求
    目录前言一、requests库二、HTTP 请求方法三、发送GET请求四、发送POST请求五、获取响应数据六、高级操作6.1文件下载6.2文件上传6.3SSL证书验证6.4保持会话6...
    99+
    2024-04-02
  • Python接口自动化之浅析requests模块get请求
    一、requests模块说明 介绍 Requests是Python语言的第三方的库,专门用于发送HTTP请求。 特点 1.Requests支持HTTP连接保持和连接池,支持使用coo...
    99+
    2024-04-02
  • Python接口自动化之浅析requests模块post请求
    在上一篇Python接口自动化测试系列文章:Python接口自动化之浅析requests模块get请求,介绍了requests模块、get请求及响应结果详解。接下来介绍request...
    99+
    2024-04-02
  • Python 之requests封装通用http协议接口请求
      思想这东西任何时候也不会是固定的,纵使框架大致一样,也不尽相同。关键还得是看业务和具体需求。python接口自动化测试框架,软件:IDE开发工具必选+工具类如下:  1、主要框架有:requests库、unittest单元测试框架、HT...
    99+
    2023-06-02
  • Python网络请求模块urllib与requests使用介绍
    目录urlib 介绍Requests 介绍无需参数直接请求单个页面带参数的 GET 请求发送 POST 请求Python 网络请求模块 urllib 、requests Python...
    99+
    2024-04-02
  • python 的http请求模块 url
    urllib3是一个强大的,理智的友好的HTTP客户端程序。大部分的Python的生态系统已经使用,你也应该urllib3。urllib3带来从Python标准库缺少许多关键特征:线程安全。连接池。客户端SSL / TLS验证。多重编码文件...
    99+
    2023-01-31
    模块 python http
  • Angular中http请求模块的使用方法
    这篇文章主要介绍了Angular中http请求模块的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先模块引入import { BrowserMo...
    99+
    2023-06-06
  • Python 使用requests模块发送GET和POST请求的实现代码
    ①GET # -*- coding:utf-8 -*- import requests def get(url, datas=None): response = requests.get(url...
    99+
    2022-06-04
    模块 代码 Python
  • Python requests模块怎么使用
    本文小编为大家详细介绍“Python requests模块怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python requests模块怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-05
  • requests模块使用
    安装 requests# 在命令行工具中使用pip install requests# 使用前需要导入import requests下面我们来看一下requests库的几种常用高级用法会话对象会话对象可以跨请求保持某些参数,在同一个 Ses...
    99+
    2023-06-02
  • php使用guzzle http发送并发接口请求
    在 PHP 中, Guzzle 是一个功能强大且流行的 HTTP 客户端,提供了方便的接口来发送 HTTP 请求并处理响应,本人非常喜欢这个包且重度依赖。 以下是使用 Guzzle 发送并发请求的基本示例:  首先确保在你的项目中安装了 G...
    99+
    2023-09-22
    php http 数据库
  • Python使用Requests请求网页方式
    目录GET请求POST方法Session踩坑记要扩展总结Requests 继承了urllib2的所有特性。 Requests支持HTTP连接保持和连接池,支持使用cooki...
    99+
    2023-03-14
    Python使用Requests Requests请求网页 Python Requests请求网页
  • Python如何使用Requests请求网页
    本篇内容主要讲解“Python如何使用Requests请求网页”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何使用Requests请求网页”吧!Requests 继承了u...
    99+
    2023-07-05
  • Python接口自动化浅析requests请求封装原理
    目录以下主要介绍如何封装请求将常用的get、post请求封装起来get请求源码:post请求源码:再来研究下request源码:直接调用request函数在上一篇Python接口自动...
    99+
    2024-04-02
  • python requests模块的使用示例
    目录为什么使用requests:模拟get请求:模拟请求头部信息模拟post请求requests上传文件requests设置代理time模块设置请求超时retrying模块设置刷新c...
    99+
    2024-04-02
  • python之接口请求
          实际工作中,需要用到python来对服务器进行请求(也是方便进行接口自动化),因为,本文来记录一下python是如何来进行get和post请求的,本文针对python的httplib模块介绍get和post请求,urllib模...
    99+
    2023-01-31
    接口 python
  • Python使用POST方法发送HTTP请求的15个示例(基于requests)
    以下是使用requests库调用HTTP接口进行POST请求的15个示例: 发送简单的POST请求: import requestspayload = { 'key1': 'value1', '...
    99+
    2023-09-01
    python http
  • Python3使用requests模块显
    1. 相关资料 请求关键参数:stream=True。默认情况下,当你进行网络请求后,响应体会立即被下载。你可以通过 stream 参数覆盖这个行为,推迟下载响应体直到访问 Response.content 属性。 tarbal...
    99+
    2023-01-31
    模块 requests
  • python中requests模块怎么用
    这篇文章将为大家详细讲解有关python中requests模块怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Requests模块是一个用于网络请求的模块,主要用来模拟浏览器发请求。其实类似的模块有很...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作