multipart/form-data 如何用requests发送请求
requests 传参类型:
requests 模块传参有四种方式:params、data,、JSON 和 files。接下来给大家详细讲解一下 requests 模块中这几种传参方式的区别。
- parmas: 传递查询字符串参数(常用于 get 请求)
- data: 传递表单类型的参数(参数类型为:Content-Type:application/x-www-form-urlencoded)
- json: 传递 JSON 类型的参数(参数类型为:Content-Type:application/json)
- files: 用于上传文件(参数类型: content-type:multipart/form-data;)
postman如何测试文件上传接口,点击send下面的 Code可以选择python语言可以看到requests发请求的样本
上传文件的的接口参数的类型为 content-type:multipart/form-data,那么我们使用 requests 来发送请求的时候,接口中文件上传的参数需要使用 files 来传递。files 参数格式如下
第一种方式:通过requests的post方法参数传入files
# fiels为字典类型数据,上传的文件为键值对的形式,参数名作为键,
# 参数值是一个元组,内容为以下格式(文件名,打开的文件流,文件类型)
files = {
"pic": ("test.gif", open("test.gif", "rb"), "images/git")
}
# 注意点:除了上传的文件,接口其他参数不能放入files中
import requests
# 如何请求文件上传的接口
url = "http://127.0.0.1:8080/upload"
# 上传的文件参数
files = {
"pic": ("test.gif", open("test.gif", "rb"), "images/git")
}
# 其他的参数
data = {
"nickname": "阿登",
"age": 28,
"sex": "男",
}
# 发送请求
response = requests.post(url=url, files=files, data=data)
# 打印结果
print(response.json())
第二种通过第三方库 requests-toolbelt
requests-toolbelt第三库的类 MultipartEncoder去处理 multipart/form-data
需要安装pip install requests-toolbelt
官方文档
https://toolbelt.readthedocs.io/en/latest/user.html#multipart-form-data-encoder
import requests
# 如何请求文件上传的接口
url = "http://127.0.0.1:8080/upload"
# 请求参数
data = MultipartEncoder(
fields={"nickname": "阿登", "age": 28,"sex": "男",
"pic": ("test.gif", open("test.gif", "rb"), "images/git")}
)
# 构造请求头
headers={'Content-Type': data.content_type}
# 发送请求
response = requests.post(url=url,data=data,headers=headers)
# 打印结果
print(response.json())