51

Postman 之 HTTP Multipart/form-data 调试

 5 years ago
source link: https://www.tuicool.com/articles/jQFriae
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

无论是前端,还是后端开发,HTTP 接口的使用率实在是太高了。开发好了特定的 HTTP 接口,没有一个好的测试工具,怎么可以呢?

而 Postman 就是一款好用的爱不释手的测试工具,谁用谁说爽。

接口说明

已开发好 /woms/api/UpEvent.php 的 HTTP 接口。该接口完成 JSON 消息上报及若干图片文件上传的任务。主要通过 HTTP 的 multipart/form-data 格式推送数据到服务器。该格式详细定义可见   RFC1867

Postman 登场

Postman 是 Chrome 的插件,但我觉得 PC 版更好,我选择 PC 版本! Postman-win64-7.7.3-Setup.exe

安装好之后,初次打开,需要注册账号,按照提示,输入账号,设置密码,然后就可以注册成功。登录进入主界面后。第一眼,就看着特别舒服。

niABJrb.png!web

Postman 调试 HTTP 接口

主要有3点:

  • 输入测试接口

    点击  Create a request , 输入 http 测试接口

  • 按照接口方法构造测试数据

    根据  Multipart/form-data  有几部分内容,就输入 几个键名称 和 值内容, 截图见下!

  • 查看输出,验证结果

    Postman 调试截图如下:

qQFVBrM.png!web

注意: 上图我用红色小圈括起来的部分,这里一定不可以选错。

抓包截图如下:

FviQbyI.png!web

抓包看: 共发送了6段数据,第一段是 Json,其余的都是 jpeg 的图片。其实这里的第一段 Json 数据就是对5张图片数据的描述。

HTTP multipart/form-data 补充

multipart/form-data 主要是将多条表单的数据处理为一条消息,发送到服务器。

多条消息之间用分隔符分开。分隔符用 boundary=xxxxxx 来定义,xxxxx就是分隔符。

这样一个 HTTP 请求,由于有 boundary 隔离,既可以上传文本消息的同时,也可以上传文件。当上传的字段是文件时,可用 Content-Type 标明文件类型;

消息实例的具体文本如下: 其中图片数据特别多(乱码部分),我特意删除后贴出来:

 1 POST /woms/api/UpEvent.php HTTP/1.1
 2 Content-Type: multipart/form-data; boundary=----4235013262151947840
 3 User-Agent: PostmanRuntime/7.17.1
 4 Accept: */*
 5 Cache-Control: no-cache
 6 Postman-Token: 552bb4b0-ddbe-4e10-b5b1-dd16ce6afe82
 7 Host: 192.168.100.146
 8 Accept-Encoding: gzip, deflate
 9 Content-Length: 661588
10 Connection: keep-alive
11 
12 ----4235013262151947840
13 Content-Disposition: form-data; name="info"
14 Content-Type: application/json
15 
16 {"AuthUser":"13800001111",
17 "AuthPasswd ":"123456",
18 "Timestamp":"1568743234",
19 "EventTime":"1568743234",
20 "EventType":1,
21 "EventLevel":2,
22 "EventSubject":"Test",
23 "EventDesc":"Test",
24 "Longitude":"33.44",
25 "Latitude": "116.43",
26 "AccpetUser": "18200129832",
27 "FileList": [{
28 "FileName": "haha.jpg",
29 "FileSize": 83},
30 {"FileName": "haha.txt",
31 " FileSize": 16}]
32 }
33 ----4235013262151947840
34 Content-Disposition: form-data; name="file1"; filename="haha.jpg"
35 Content-Type: image/jpeg
36 
37 ???àJFIF??C    
38  $.' ",#(7),01444'9=82<.342??C
39 ----4235013262151947840
40 Content-Disposition: form-data; name="file2"; filename="6.jpeg"
41 Content-Type: image/jpeg
42 
43 ???á
44 ExifII*4M¤?(1"′2?iì$ü
45 ?áT?a1??ù
46 ----4235013262151947840
47 Content-Disposition: form-data; name="file3"; filename="7.jpeg"
48 Content-Type: image/jpeg
49 
50 ?s??:?ó?μ???üo6??é_?o????~áczóê??A????&???#áè?????áè??ù
51 ----4235013262151947840
52 Content-Disposition: form-data; name="file4"; filename="8.jpeg"
53 Content-Type: image/jpeg
54 
55 ?y??ü·á??ù
56 ----4235013262151947840
57 Content-Disposition: form-data; name="file5"; filename="9.jpeg"
58 Content-Type: image/jpeg
59 
60 ???á7%ExifMM*44¤?(1"′2?iì$
61 ?}?.W§?N/éy}'ü?%ì}′ù=±ú??S?g???Yoíùüê|t???ú??ù
62 ----4235013262151947840--

Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK