一文详解 requests 库中 json 参数和 data 参数的用法

2023-09-20 15:10:08

在requests库当中,requests请求方法,当发送post/put/delete等带有请求体的请求时,有json和data2个参数可选。

众所周知,http请求的请求体格式主要有以下4种:

application/json

applicaiton/x-www-from-urlencoded

multipart/form

application/xml

那么针对以上的请求格式,都分别使用什么参数呢?

接下来一一示例说明。

第一种:application/json

第一步:找到一个application/json请求的接口

图片

第二步:发起json格式的http请求 - 使用json参数且字典类型

图片

第二种:applicaiton/x-www-from-urlencoded

第一步:找到一个application/x-www-from-urlencoded请求的接口

图片

第二步:发起x-www-from-urlencoded格式的http请求 - 使用data参数

具体代码如下:

图片

第三种:multipart/form

第一步:找到一个multipart/form请求的上传接口

图片

第二步:发起multipart/form格式的http请求 - 使用data和files参数

图片

完整的requests处理上传接口

第四种:application/xml

第一步:设计一个xml格式的接口

现用flask设计一个简单的xml格式的登录接口,请求参数就是用户名和密码。

代码如下(在本地运行,请先安装flask库。将以下代码放在app.py当中):

from flask import Flask, request, Response
app = Flask(__name__)@app.route('/login', methods=['POST'])
def login():
    # 获取请求体中的XML数据
    xml_data = request.data
    # 解析XML数据,提取用户名和密码
    try:
        import xml.etree.ElementTree as ET
        root = ET.fromstring(xml_data)
        username = root.find('username').text
        password = root.find('password').text
    except Exception:
        # 解析失败,返回错误响应
        response_xml = '0请求格式错误'
        return Response(response_xml, mimetype='text/xml')
    # 验证用户名和密码
    if username == 'python' and password == '1234567890':
        # 登录成功,返回成功响应        response_xml = '1成功1001'
    else:
        # 登录失败,返回失败响应
        response_xml = '-1用户名或密码错误'
    return Response(response_xml, mimetype='text/xml')if __name__ == '__main__':
    app.run()

请求的数据xml格式如下:

<login>
    <username>python</username>
    <password>1234567890</password>
</login>

响应的数据xml格式如下:

<response>
      <code>1</code>
      <message>成功</message>
      <userid>1001</userid>
</response>

在本地pycharm中,使用python app.py运行这个服务,

图片

第二步:发起xml格式的http请求 - 使用data参数

data是字符串类型,且是xml格式的数据。

在这里插入图片描述
在这里插入图片描述

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

更多推荐

大数据-kafka学习笔记

KafkaKafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。Kafka可以用作Flink应用程序的数据源。Flink可以轻松地从一个或多个Kafka主题中消费数据流。这意味着您可以使用Kafka来捕获和传输实时数据,并将其发送到Flink进行进一步处理。Fl

创建第一个MyBatis框架--保姆级教学

文章目录前言一、创建一个空的mybatis项目二、创建一个Maven模块三、各个文件的配置四、总结前言在idea上创建我的第一个MyBatis框架一、创建一个空的mybatis项目1、new一个新的项目2、选择最下面,创建一个空项目3、为空项目取一个名字,位置可以自己选4、点击完成后,开始配置以下版本,两个版本得一样,

HDMI字符显示实验

FPGA教程学习第十五章HDMI字符显示实验文章目录FPGA教程学习前言实验原理程序设计像素点坐标模块字符叠加模块实验结果知识点总结前言在HDMI输出彩条的基础上输出osd叠加信息。实验原理实验通过字符转换工具将字符转换为16进制coe文件存放到单端口的ROMIP核中,再从ROM中把转换后的数据读取出来显示到HDMI上

高云FPGA系列教程(9):cmd-parser串口命令解析器移植

文章目录@[toc]cmd-parser库简介cmd-parser库源码获取GW1NSR-4C移植cmd-parser实际测试cmd-parse命令解析器优化本文是高云FPGA系列教程的第9篇文章。上一篇文章介绍片上ARMCortex-M3硬核处理器串口外设的使用,演示轮询方式和中断方式接收串口数据,并进行回环测试。本

千兆以太网硬件设计及链路层 MAC 协议格式

以太网系列文章:(1)千兆以太网硬件设计及链路层MAC协议格式(2)千兆以太网网络层ARP协议的原理与FPGA实现(3)CRC校验代码原理文章目录前言一、以太网MAC层接口介绍1.MII接口2.GMII接口3.RGMII接口二、以太网(MAC)帧协议介绍前言从本章开始,将分享千兆以太网设计的相关知识。将为大家分享千兆以

基于FPGA的图像sobel锐化实现,包括tb测试文件和MATLAB辅助验证

目录1.算法运行效果图预览2.算法运行软件版本3.部分核心程序4.算法理论概述5.算法完整程序工程1.算法运行效果图预览将FPGA的仿真结果导入到matlab显示图像效果2.算法运行软件版本MATLAB2022a,vivado2019.23.部分核心程序.................................

【洛谷 P1364】医院设置 题解(图论+深度优先搜索)

医院设置题目描述设有一棵二叉树,如图:其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为111。如上图中,若医院建在111处,则距离和=4+12+2×20+2×40=136=4+12+2\times20+2\ti

分布式调度 Elastic-job

分布式调度Elastic-job1.概述1.1什么是任务调度我们可以思考一下下面业务场景的解决方案:某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券某银行系统需要在信用卡到期还款日的前三天进行短信提醒某财务系统需要在每天凌晨0:10分结算前一天的财务数据,统计汇总以上场景就是任务调度所需要解决的问题任务调

“混合”引擎为通用子模块提供动力,实现嵌入式I / O灵活性

现成的组件对于嵌入式开发工程师而言并不是什么新鲜事物。但是,实际上没有人期望一种“一刀切”的解决方案,尤其是在涉及复杂的I/O要求的情况下。但是,基于流行的夹层卡格式的具有成本效益的现场可编程门阵列(FPGA)技术的新实现正在“针对VME,PCI,CompactPCI和VME提供可承受的标准硬件和自由形式的I/O多功能

Mac FoneLab for Mac:轻松恢复iOS数据,专业工具助力生活

如果你曾经不小心删除了重要的iOS数据,或者因为各种原因丢失了这些数据,那么你一定知道这种痛苦。现在,有一个名为MacFoneLab的Mac应用程序,它专门设计用于恢复iOS数据,这可能是你的救星。MacFoneLabforMac是一种强大的工具,它可以帮助你恢复各种类型的iOS数据,包括照片、视频、联系人、短信、通话

Vulnhub实战-DC9

前言本次的实验靶场是Vulnhub上面的DC-9,其中的渗透测试过程比较多,最终的目的是要找到其中的flag。一、信息收集对目标网络进行扫描arp-scan-l对目标进行端口扫描nmap-sC-sV-oAdc-9192.168.1.131扫描出目标开放了22和80两个端口,访问目标的80端口。对目标进行目录扫描与分析。

热文推荐