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

Python接口自动化-requests模块之post请求

一、源码解析

def post(url, data=None, json=None, **kwargs):r"""Sends a POST request.:param url: URL for the new :class:`Request` object.:param data: (optional) Dictionary, list of tuples, bytes, or file-likeobject to send in the body of the :class:`Request`.:param json: (optional) json data to send in the body of the :class:`Request`.:param \*\*kwargs: Optional arguments that ``request`` takes.:return: :class:`Response <Response>` object:rtype: requests.Response"""return request('post', url, data=data, json=json, **kwargs)

post请求参数解析:

  • url: 请求的url,必填;

  • data: 选填,请求参数;

  • json: 选填,请求参数;

  • kwargs:选填,可以传入headers、cookies等。

二、data、json区别 

小伙伴们看完可能有点懵逼,data和json有啥区别呀,什么时候传入data,什么时候传入json。

举个栗子:

data = {"name":"vivi"
}
print(type(data))

聪明的小伙伴立即抢答了,打印的是字典类型。

那如果想把字典转换为json字符串呢,需要引用json模块

import json
data = {"name":"vivi"
}
data = json.dumps(data)
print(type(data))

敲黑板:

不管json是str还是dict,如果不指定headers中的content-type,默认为application/json;

data为dict时,如果不指定content-type,默认为application/x-www-form-urlencoded,相当于普通form表单提交的形式;

data为str时,如果不指定content-type,默认为application/json。

重点来了,post请求参数到底是传data还是json,这时候我们要看请求头里的content-type类型(具体参照接口文档,没有接口文档的抓包)。

如果请求头中content-type为application/json,  为json形式,post请求使用json参数。

如果请求头中content-type为application/x-www-form-urlencoded,为表单形式,post请求时使用使用data参数。

 

三、form形式发送post请求

当前接口的请求类型为application/x-www-form-urlencoded。

# 导入requests模块
import requests
# 请求url
url = "http://127.0.0.1:8000/user/login"
# 请求参数
payload = {"mobilephone":"1530272****","pwd":"123456"
}
# form表单形式,参数用data
res = requests.post(url, data=payload)
print(res.text)

响应结果为:

{"status": 1,"code": "10001","data": null,"msg": "登录成功"
}
四、json形式发送post请求

当前接口的请求类型为application/json。

# 导入requests模块
import requests
# 请求的url地址
url = 'http://127.0.0.1:8000/user/login/'
# 请求头
headers = {"content-type":"application/json"}
# payload 为传入的参数
payload = {"username":"vivi","password":"123456","remember_me":"false"}
# json形式,参数用json
res = requests.post(url,json=payload,headers=headers)
print(res.text)

响应结果为:

{"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InZpdmkiLCJleHAiOjE1ODY1OTUyOTEsImVtYWlsIjoidml2aUBxcS5jb20ifQ.1RGrO6hSWHi9RDXjYuqY0UCPKMmQvaybpHvYqC0dCis","user_id": 1,"username": "vivi"
}

问题来了,如果请求类型为application/json,我偏要传入data参数呢?

import requests
payload = {"username":"vivi","password":"123456","remember_me":"false"}
header = {"content-type":"application/json"}
url = 'http://127.0.0.1:8000/user/login/'
res = requests.post(url,data=payload,headers=header)
print(res.text)

响应结果:请求错误

{"code":400,"data":[],"message":"Input error"}

请求类型为application/json,如果想用data传参,需要将字典类型数据转换为json字符串。

import requests
import json
payload = {"username":"vivi","password":"123456","remember_me":"false"}
header = {"content-type":"application/json"}
# 字典转换为json串
data = json.dumps(payload)
url = 'http://127.0.0.1:8000/user/login/'
res = requests.post(url,data=data,headers=header)
print(res.text)

总结:本文主要讲解post源码,data、json参数应用场景及实战。接口使用的本地服务,如果大家想练手,可以使用公司项目或网上项目自行实战。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

文档获取方式:点击右边链接领取:软件测试全套资料分享      

相关文章:

Python接口自动化-requests模块之post请求

一、源码解析 def post(url, dataNone, jsonNone, **kwargs):r"""Sends a POST request.:param url: URL for the new :class:Request object.:param data: (optional) Dictionary, list of tuples, bytes, or file-likeobject to send in the body of the :cl…...

DDoS检测防御实现方案

流量采集模式 通过分光器将流量直接镜像到攻击检测器&#xff0c;收包采用DPDK库。 当前整机流量、源IP信息、连接数 、连接内容(五元组等)的信息汇聚 当发生告警时采样原始数据包&#xff0c; 采用固定采样算法 基于检测对象的TCP syn ack psh ack established的个数、流量…...

ArcGIS: 第二届全国大学生GIS技能大赛(广西师范学院)详解-下午题

目录 01 题目 02 思路和实操 2.1 流域提取-思路 2.2 流域提取-实操 2.2.1 获取DEM ​编辑 2.2.2 水文分析-提取流域基于单出水口 2.3 河网分级-思路 2.4 河网分级-实操 2.4.1 提取河道网络 2.4.2 河网分级 ​编辑 2.5 子流域提取和处理-思路 2.6 子流域提取和处理-实…...

vue七牛云视频直传

完成后样式&#xff1a; 下面的代码是我自己项目里面用到的&#xff0c;一些判断看自己情况去掉&#xff0c;用的是element-ui组件 安装 uuid 库。你可以使用 npm 或 yarn 来完成安装。在终端中执行以下命令&#xff1a; npm install uuidhtml部分 <el-upload class&quo…...

云原生Kubernetes:K8S集群版本升级(v1.20.15 - v1.22.14)

目录 一、理论 1.K8S集群升级 2.集群概况 3.升级集群&#xff08;v1.21.14&#xff09; 4.验证集群&#xff08;v1.21.14&#xff09; 5.升级集群&#xff08;v1.22.14&#xff09; 6.验证集群 (v1.22.14) 二、实验 1.升级集群&#xff08;v1.21.14&#xff09; 2.验…...

VUE树结构实现

实现效果: 数据库表结构如下: 要求:需要有parentId,id。parentId就是父记录的id 表数据要求:一定不要让一条记录的parentid和id相同 前端代码: 注意:el-table标签里面需要加上属性,才可以有下拉箭头的样式 <el-table v-loading="listLoading" :data...

Node.js 正在逐渐被淘汰!Bun 1.0 正在改变 JavaScript 的游戏规则

在深入讨论之前&#xff0c;我们需要解释什么是 JavaScript 运行时以及为什么我们应该关心其速度。 想象一下&#xff0c;你用 JavaScript 写了一个故事&#xff0c;需要有人大声读出来。JavaScript 运行时就像是那个友好的叙述者&#xff0c;为你的故事赋予生命&#xff01;它…...

[Machine Learning][Part 5]监督学习——逻辑回归

之前文章中提到监督学习的应用可分为两类&#xff1a;线性回归和逻辑回归。和线性回归不同&#xff0c;逻辑回归输出只有0和1。对于一个逻辑回归任务&#xff0c;可以先使用线性回归来预测y。然而我们希望逻辑回归预测模型输出的是0和1&#xff0c;为了达到这个目的&#xff0c…...

whistle安卓手机抓包(图文详解)

1、安装node https://nodejs.org &#xff08;官网下载对应的node,一般推荐长期稳定版本 LTS&#xff09; 需要node的版本是大于 v0.10.0 查看自己本地node 版本号 node -v2、安装whistle npm i -g whistle3、开启whistle 补充说明&#xff1a; ● w2 stop&#xff1a;关闭…...

【经典排序算法 time: 2023-10-12】冒泡排序(层层优化改进)

原理 每次循环找出一个最大的元素&#xff08;动态演示&#xff09;第一版冒泡 public class Maopao1 {public static void main(String[] args) {long start System.currentTimeMillis();int[] arr2 {11, 23, 69, 99, 1, 3, 45, 67, 5, 234, 678, 999, 7, 123};int[] result…...

【图像去噪的扩散滤波】图像线性扩散滤波、边缘增强线性和非线性各向异性滤波(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

4、在docker容器内的tomcat 中发布项目

1、查看本地是否有tomcat镜像&#xff0c;如果不存在则去下载 docker images 2、查看本地是否有tomcat容器&#xff0c;如存在跳过第3步 docker ps 3、创建tomcat容器 此容器用于复制tomcat的配置文件&#xff0c;配置文件复制后需删除此容器&#xff0c;如果已经存在跳过此步…...

数学建模——人工神经网络模型

一、人工神经网络简介 1、神经网络起源与应用 1943年心理学家McCulloch和数学家Pitts提出神经元生物数学模型&#xff08;M-P模型&#xff09;&#xff0c;后来人工神经网络(Artifical Neural Network,ANN)是在生物神经网络(Biological Neural Network,BNN)基础上发展起来的&a…...

java合成多个pdf为一个pdf

pom文件 <dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version></dependency>主文件 import com.lowagie.text.Document; import com.lowagie.text.pdf.PdfCopy; import com.lo…...

“高级Vue状态管理 - Vuex的魅力与应用“

目录 引言1. Vuex的简介1.1 什么是Vuex&#xff1f;1.2 Vuex的核心概念 2. Vuex的值获取与改变(综合案例)3. Vuex的异步请求总结 引言 在现代Web开发中&#xff0c;前端应用变得越来越复杂。随着应用规模的扩大和数据流的复杂性增加&#xff0c;有效地管理应用的状态成为了一项…...

Vue整合

基础配置&#xff1a; 1.创建&#xff1a;cmd 中 输入 create vue vue_name 启动命令&#xff1a;npm run serve 2.当node_modules(依赖)丢失时通过 npm install 下载 【根据&#xff1a;package-lock.json下载】 3.下载路由 npm i vue-router3.5.2 -S main.js导入 // np…...

探秘PMP和六西格玛的不同:哪一个能为你的职业生涯加分?

今天&#xff0c;我们将带你深入了解一项相对冷门但价值不菲的证书——六西格玛黑带。 可能你曾听说过PMP&#xff0c;但相比之下&#xff0c;六西格玛黑带的资源分享似乎较少&#xff0c;考试内容却更为广泛深入。这里&#xff0c;让我为你详细解析这一考试&#xff0c;带你进…...

大数据学习(3)-hive分区表与分桶表

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博>主哦&#x…...

JS 原生实现触底加载

创建一个容器来存储列表项。 监听滚动事件&#xff0c;当滚动接近底部时触发加载更多操作。 加载更多数据后&#xff0c;将新数据附加到容器中。 以下是一个简单的示例&#xff1a; <!DOCTYPE html> <html><head><style>#scroll-container {heigh…...

结构体,位段!

目录 1.什么是位段&#xff1f; 别急&#xff01;在下面第二点我和大家介绍。 2.位段的内存怎么分配&#xff1f; 还有一种情况就是两种类型夹杂在一起的位段 3.位段的跨平台问题 4.位段能干嘛&#xff1f;&#xff08;应用&#xff09; 5.位段的注意事项 1.什么是位段&…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...