在各种请求体格式中,文件上传是比较特殊的一种,通常其content-type请求头为multipart/form-data,可以提交文本与文件混合的请求数据。这一节我们通过两个例子来看看postman怎么调用文件上传的请求。
以特斯汀学院自动化测试平台项目上传头像图片的接口为例。
项目地址:
http://www.testingedu.com.cn/mypro/#/login
接口地址:
http://www.testingedu.com.cn/mypro/api/user/setavatar
从接口抓包信息中可以看到,Content-Type为multipart/form-data; boundary=
----WebKitFormBoundarysArkjRsb6TbgepSl,其中的boundry是作为请求体多个部分的参数的分割线边界的,从请求体内容第一行就可以看到这个分割线的值。

在Postman中完成该文件上传接口的调用时,需要选择body中的form-data,在填写内容时注意将鼠标移到key列输入框的右侧,会出现一个下拉框,可以选择参数类型为Text或者File,针对文件参数选择File,并填写抓包信息中获取到的键名file,最后在VALUEL列中选择要上传的文件。

设置完请求体之后查看请求头可以看到Content-Type的值已经被自动设置为multipart/form-data,而boundry字段则是在请求发送时计算得到。所以使用postman完成文件上传接口请求时,并不需要额外设置Content-Type。

要注意,设置头像接口需要前置调用测试平台登录接口之后才能正常完成请求,否则会提示缺少user_id字段,在请求前先参考json格式请求章节的示例登录接口
http://www.testingedu.com.cn/mypro/api/user/login完成登录操作之后再调用设置头像接口。

这里,我们完成了一个只有文件参数的文件上传接口,接下来,再看一个除了文件参数,还有文本格式参数的文件上传接口。
以特斯汀电商项目个人信息修改头像的接口为例。
项目地址:
http://www.testingedu.com.cn:8000/Home/User/info.html
接口地址:
http://www.testingedu.com.cn:8000/index.php/home/Uploadify/imageUp/savepath/head_pic/pictitle/banner/dir/images.html
从抓包信息中可以看到,请求体中包含了多段由boundry分割开的请求参数内容,除了上传的文件参数之外,还包含了部分纯文本内容的参数。

将fiddler切换到WebForms格式显示则可以看到完整的参数列表,每一行的参数名为其中name指定的字段。

在Postman中完成请求时,针对同时出现文件和文本格式的请求,在选择填写的参数类型时,根据对应类型进行选择并填写。

由此可以看到,文件上传格式处理时,在Postman里只需要按照请求参数格式选择并逐个填写,并不复杂。
至此,在Postman中完成常见的几种请求体格式的请求操作都已实现。
回顾总结一下,常用的接口测试请求体的编辑格式包括如下几种,和Content-Type头域分别对应:
在Postman中使用x-www-form-urlencoded进行填写,或者使用raw格式填写,再手动设置Content-Type
在Postman中使用raw格式选择json完成填写。
在Postman中使用raw格式填写,再手动设置Content-Type为text/xml。
在Postman中使用form-data填写,注意文件和文本类型格式,分别选择Text和File格式。