python使用requests模块请求http接口

这篇具有很好参考价值的文章主要介绍了python使用requests模块请求http接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 请求,只不过返回的响应中没有具体的内容,用于获取报头
CONNECT HTTP/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 requests

url = "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.text
print(response.content)    	# 响应内容的二进制格式: response.content
print(response.json())    	# 如果响应内容是json格式,可以用response.json()方法转换成 dict类型

POST 请求

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

import requests
import json

url = "http://192.168.1.30::3333/demo/"

# from-data形式1
payload = {'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形式2
payload = {"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形式1
data={"key1": 'value1', "key2": 'value2'}
response = requests.post(url, json=data)

# json形式2
header={'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** 服务器错误,服务器在处理请求的过程中发生了错误

状态码列表:文章来源地址https://www.toymoban.com/news/detail-703001.html

状态码 描述
100 继续。客户端应继续其请求
101 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
102 由WebDAV(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 网关超时。服务器作为网关或代理,但是没有及时从上游服务器收到请求
505 HTTP 版本不受支持。服务器不支持请求中所用的 HTTP 协议版本

postman生成python请求代码

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

到了这里,关于python使用requests模块请求http接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python使用POST方法发送HTTP请求的15个示例(基于requests)

    以下是使用 requests 库调用HTTP接口进行POST请求的15个示例: 发送简单的POST请求: 发送JSON格式的POST请求: 发送XML格式的POST请求: 发送文件的POST请求:

    2024年02月10日
    浏览(45)
  • 【从零学习python 】92.使用Python的requests库发送HTTP请求和处理响应

    URL参数传递方式一:使用字典传递参数 这段代码使用 requests 库发送了一个GET请求,指定了一个URL( \\\'https://www.apiopen.top/satinApi\\\' )和一个参数字典( params )。 params 字典中包含了请求的参数,其中 type 的值为1, page 的值为2。 requests.get() 方法会自动将参数拼接到URL中,并发送GET请求

    2024年02月11日
    浏览(75)
  • 一图看懂 requests 模块:用Python编写、供人类使用的HTTP库, 资料整理+笔记(大全)

    本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 全文介绍系统内置 requests 模块、函数、类及类的方法和属性。 它通过代码抓取并经AI智能翻译和人工校对。 是一部不可多得的权威字典类工具书。它是系列集的一部分。后续陆续发布、敬请关注。【原创

    2024年02月06日
    浏览(44)
  • python3 爬虫相关学习1:安装requests模块

    目录 1 安装前:避免python2  python3 引起的问题 2 如何安装python3 2.1 直接上python3 官网下载 2.2 或者windows的话,microsoft store 里也可以下载 2.3 查看python版本 3 安装requests模块 3.1 很可能安装requests模块之前会遇到报错,需要先升级pip 3.2 安装 requests模块 4 开始使用 requests 模块 4.

    2024年02月05日
    浏览(70)
  • Python接口自动化之request请求封装

    我们在做自动化测试的时候,大家都是希望自己写的代码越简洁越好,代码重复量越少越好。那么,我们可以考虑将request的请求类型(如:Get、Post、Delect请求)都封装起来。这样,我们在编写用例的时候就可以直接进行请求了。 我们先来看一下Get、Post、Delect等请求的源码,

    2024年02月13日
    浏览(49)
  • HTTP请求:requests的进阶使用方法浅析

    上篇文章讲解了requests模块的基础使用,其中有get、put、post等多种请求方式,使用data、json等格式做为请求参数,在请求体中添加请求头部信息的常见信息,如:headers、cookies,以及对请求响应的处理方法。接下来讲解一下requests的高级用法。 method:提交方式(get|post);

    2024年02月09日
    浏览(41)
  • requests 库(发送 http 请求)基本使用指南

    requests 是一个 Python 第三方库,用于发送 HTTP 请求。它提供了一种简单和方便的方法来与 Web 服务进行交互,如获取网页内容、发送数据、处理 Cookie 等。 requests 是 用 python 语言编写的,比 urllib2 模块更简洁 requests 支持 HTTP 连接保持和连接池,支持使用 cookie 保持会话,支持文

    2024年02月07日
    浏览(60)
  • Python接口自动化搭建过程,含request请求封装

    接口测试自动化好处 显而易见的好处就是解放双手😀。 可以在短时间内自动执行大量的测试用例 通过参数化和数据驱动的方式进行测试数据的变化,提高测试覆盖范围 快速反馈测试执行结果和报告 支持持续集成和持续交付的流程 使用Requests+pytest+allure搭建测试框架的目的

    2024年02月07日
    浏览(53)
  • python requests.get发送Http请求响应结果乱码、Postman请求结果正常

    最近在写爬虫程序,自己复制网页http请求的url、头部,使用python requests和postman分别请求,结果使用postman发送http get请求,可以得到正常的json数据,但是使用python的requests发送则接受到乱码,response.text的内容是: response.content的内容是: 十分费解,于是网上搜索了相关内容,

    2024年01月24日
    浏览(58)
  • python+unittest+requests+HTMLRunner搭建接口测试框架,执行用例请求多个不同请求方式的接口

    问题描述: 搭建接口测试框架,执行用例请求多个不同请求方式的接口 实现步骤: ① 创建配置文件config.ini,写入部分公用参数,如接口的基本url、测试报告文件路径、测试数据文件路径等配置项 ② 从配置文件中读取并返回文件中内容,或写入配置文件的方法,文件命名

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包