函数原型
def requests.get(url, params=None, **kwargs):
def requests.post(url, data=None, json=None, **kwargs):
def requests.post(url, headers=head, files=files) #上传文件 -->files实际上是一个二进制流
函数解释
requests.get() url是接口地址, params 用于传参
requests.post() url是接口地址, data 用于传参, json 也适用于传参
那么data 和 json 两种传参有什么区别了?
主要是通过请求头Content-Type来区分,Content-Type作用是服务器要求传入的报文的内容类型。
请求 = 请求方式+请求路径+请求头+请求正文 组成
常用的四种传参方式对应的Content-Type的几种取值如下:
1.form-data: Content-Type:multipart/form-data;boundary=<calculated when request is sent>
2.x-www-from-urlencoded: Content-Type:application/x-www-form-urlencoded
3.raw:
text: Content-Type:text/plain
javascript: Content-Type:application/javascript
json: Content-Type:application/json
html: Content-Type:text/html
xml: Content-Type:application/xml
4.binary: Content-Type:application/binary
data 和 json 传参以及 Content-Type 的关系
data 传参,报文如果是dict类型,那么默认Content-Type:application/x-www-form-urlencoded
data传参,报文如果是str类型,那么默认Content-Type:text/plain
json传参,报文如果是dict类型,那么默认Content-Type:application/json
json传参,报文如果是str类型,那么默认Content-Type:application/json
转换函数
json.loads() 函数能把 json 字符串转化成 dict 格式
json.dumps() 函数能把 dict 格式转化成 json 字符串
小结
无论是json或str还是dict,如果不指定headers中的content-type,默认为 application/json
在Python里面json是dict的样式,是字符串的类型
data可以传纯键值对的dict(非嵌套的dict),也可以传入str格式,如果是嵌套字典那么就要使用json.dumps()把嵌套字典转化成json字符串的形式来传参
json可以传任何形式的dict(包括嵌套的dict)
通过request.post方法上传文件的请求示例:
files = {'files': ('test.png', open('文件地址', 'rb'), 'application/octet-stream', {'Expires': '0'})}
files = {'file': (文件名, open('文件地址', 'rb'), 'application/json')}
最后: 可以在公众号:伤心的辣条 ! 自行领取一份216页软件测试工程师面试宝典文档资料【免费的】。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
我推荐一个【Python自动化测试交流群:746506216】,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,助你快速进阶Python自动化测试/测试开发,走向高薪之路。
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!