您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页python-requests(四):调用上传文件的接口的解决方案

python-requests(四):调用上传文件的接口的解决方案

来源:好走旅游网
python-requests(四):调⽤上传⽂件的接⼝的解决⽅案

说明:本⽂转载⾃:

request官⽅⽹站地址: 前⾔

滴滴滴! 今天聊聊接⼝⾃动化,遇到⽂件上传的接⼝怎么去测试。

近期也有不少的⼩伙伴在⼯作中遇到了⽂件上传的接⼝,表⽰不知道应该如何去传递⽂件上传的参数。

为了帮⼤家解决这个疑惑,我这边特地写了⼀个⽂件上传的接⼝,那么接下来我们结合这个接⼝给⼤家来讲讲解决⽅案。

接⼝说明

接⼝地址:(注:⽼师⾃⼰写的⼀个接⼝,运⾏在本地)请求⽅法:POST

请求类型:Content-Type: multipart/form-data;响应类型: Content-Type:application/json接⼝⼊参

参数名agesexpic

参数类型intstring

说明⽤户昵称年龄性别

nicknamestring

file(⽂件)上传的⽂件

出参(返回值)

字段名类型codedatamsg

intobj

相关的数据信息

说明

业务码(1代表上传成功,0代码上传失败)

string相关的描述信息

返回参考⽰例:

{

\"code\": 1, \"data\": {

\"age\": \"456\

\"datetime\": \"Thu, 12 Mar 2020 16:22:57 GMT\ \"filename\": \"handle_sign.py\ \"name\": \"123\ \"sex\": \"男\" },

\"msg\": \"⽂件上传成功,⽂件保存的地址为:http://127.0.0.1:5000/images/handle_sign.py\"}

针对上⾯的接⼝⽂档简要的说明⼀下:

该接⼝需要四个参数,其中⼀个是⽤来接收上传的⽂件的,看上去和其他的接⼝并没有什么不⼀样的,返回的数据是json类型的;关于⽂件上传接⼝,需要我们引起注意的⼀个地⽅就是:请求参数类型都是Content-Type: multipart/form-data;那么这种类型的参数,我们在发送请求的时候要特别注意!他

传参的⽅式和其他参数类型是不⼀样的。接下来我们分别使⽤postman和python来请求这个接⼝。

使⽤postman上传⽂件

使⽤postman来上传⽂件,操作起来⽐较简单。

关于接⼝参数直接选择form-data这⼀栏进⾏填写就好了,要注意的点就是上传⽂件的参数,要选择⽂件类型,然后再对应参数值那⼀栏选择对应的⽂件即可,点击请求,服务器返回了上传成功的相关信息,详细操作如下图:

使⽤requests模块来上传

前⾯我们已经成功的使⽤了postman来上传⽂件,那么我们在使⽤python去做接⼝⾃动化的时候,如何来解决这个⽂件上传的问题呢?在python中关于发送http请求,我们通常都会使⽤requets模块,那么接下来我们就使⽤requests模块来上传⽂件。requests模块发送post请求直接调⽤post⽅法就可以了,那么关于⽂件上传这⾥传参的时候要特别注意,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;)

上传⽂件的的接⼝参数的类型为content-type:multipart/form-data,那么我们使⽤requests来发送请求的时候,接⼝中⽂件上传的参数需要使⽤files来传递。files参数格式如下

# fiels为字典类型数据,上传的⽂件为键值对的形式,参数名作为键,

# 参数值是⼀个元组,内容为以下格式(⽂件名,打开的⽂件流,⽂件类型)files = {

\"pic\": (\"test01.gif\}

# 注意点:除了上传的⽂件,接⼝其他参数不能放⼊files中

⽂件上传的参数准备好了,那么接⼝中其他的参数怎么处理呢?其他的参数使⽤data传递即可。参数组织如下:

# 其他的参数data = {

\"nickname\": \"⽊森\ \"age\": 18, \"sex\": \"男\}

参数都准备好了,那么接下来就可以发送请求了,完整的请求代码如下:

1 \"\"\"

2 ============================ 3 Author:柠檬班-⽊森 4 Time:2020/3/13 13:40

5 E-mail:3247119728@qq.com

6 Company:湖南零檬信息技术有限公司 7 ============================ 8 \"\"\" 9

10 import requests11

12 # 如何请求⽂件上传的接⼝

13 url = \"http://127.0.0.1:5000/upload\"14

15 # 上传的⽂件参数16 files = {

17 \"pic\": (\"test01.gif\", open(\"test01.gif\", \"rb\"), \"images/git\")18 }

19 # 其他的参数20 data = {

21 \"nickname\": \"⽊森\",22 \"age\": 18,23 \"sex\": \"男\",24 }

25 # 发送请求

26 response = requests.post(url=url, files=files, data=data)27 # 打印结果

28 print(response.json())

运⾏以上代码,结果如下:

{

'code': 1, 'data': {

'age': '18',

'datetime': 'Fri, 13 Mar 2020 10:32:24 GMT', 'filename': 'test01.gif', 'name': '⽊森', 'sex': '男'},

'msg': '⽂件上传成功,⽂件保存的地址为:http://127.0.0.1:5000/images/test01.gif'}

PS:很神奇有⽊有,上传成功了,附上⼀张图

关于⽂件上传的接⼝就给⼤家聊到这⾥,如有其他问题,欢迎留⾔!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务