Postman使用 --- api调试

Postman调试攻略

Postman是一款优秀的API调试应用,不仅仅是开发人员,只要在API协作开发/使用的过程中,都可以使用Postman达到简化操作,提高工作效率。

Postman是js写的

那Postman具体可以做什么

Postman

1.调试api
2.编写api调用案例,并可以导出分享
3.设置runner,达到api自动化测试/压力测试的效果

以上三个功能是我们平时使用Postman最常用的功能,已经能满足日常工作使用的要求

Postman分为桌面应用、web应用以及插件应用,插件一般是Chrome插件,本篇只讲桌面应用
Postman有免费版以及企业版,我们使用免费版本就可以了,已经包含了核心功能
(翻墙可以提速)64位下载地址:https://dl.pstmn.io/download/latest/win64

下载后直接双击安装使用


如要升级后无法启动,可以完全卸载并删除AppData后再重新安装,之前出现一个bug,升级后一直loading无法打开,一番搜索后才发现是postman升级时旧的程序数据不会删除,两个版本的文件存在兼容性问题,不过一般不需要升级,除非大的版本,问题不大。


安装完成后,是一个登陆页面,可以跳过,如果要登录需要翻墙。我使用的是Google账号


登陆后可以把调试记录保存到云端,不管登不登陆功能都是一致的

Postman的主要界面介绍

先看我们发送一个请求所必须的参数


HTTP请求消息Request

所以我们需要的是
第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本.

第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息
从第二行起为请求头部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等

第三部分:空行,请求头部后面的空行是必须的
即使第四部分的请求数据为空,也必须有空行。

第四部分:请求数据也叫主体,可以添加任意的其他数据。

HTTP版本Postman已经固定,我们使用时无须指定,默认是HTTP1.1


请求类型


Postman内置默认的请求类型


如果你使用netty开发自定义的http接口,那默认的类型可能不满足你的需求,可以通过编辑请求类型点击下方Save保存为自定义请求类型


请求头部

通过headers标签配置,有默认的头信息,默认是隐藏,可点击显示修改
当你的请求需要添加heade时在这里填写,如accesToken,language等



请求数据

请求数据按使用场景可以分为URL传参和body传参

URL传参
URL传参顾名思义就是直接把要传递给服务器的信息附带在请求地址中,其中可以分为parameter和path。
parameter的格式举例
http://127.0.0.1/test?id=1&name=zhangsan
其中 ?分割了参数段和资源段
?左边指明资源地址,右边开始每个参数格式为 xx=xx,用&隔开,所以本次请求的参数为id:1,name:zhangsan
Postman中parameter会直接同步param标签,所以不想写等于号和&的可以直接再param编写,效果是一致的


path格式举例
http://127.0.0.1/test/user/1
path传参意思指把路径的某段作为参数,具体需要看后端是如何定义的,例子user/1是参数指定的路径,意思是获取user id为1的信息

URL传参因为都是可见的,可能涉及到安全问题,隐私数据谨慎使用

body传参
body传参一般为post(传统方式),但是get没有body post有body这都是相对于浏览器而言的,这是浏览器解析的一套规范,我们在开发web网页时需要遵守此协议,浏览器才能正确解析我们的请求。
实际开发过自定义http接口都知道(netty实现等),在非浏览器的http请求中,请求类型只是一个名称,get可以配置body,可以解析。

formdata
打开控制台可以看到 formdata的格式为 xx: xx 多行的格式

x-www-form-urlencoded 默认的post格式
x-www-form-urlencoded的格式为name=zhangsan&id=1(没配置,截图缺)

multipart/form-data:可以上传文件或者键值对,最后都会转化为一条消息
x-www-form-urlencoded:只能上传键值对,而且键值对都是通过&间隔分开的

raw
raw 的参数可以是任意格式文本,发送端不做任何处理直接发送到服务端,一定是通过body获取,后端的解析方式为读取一次本次请求的payload转为流。
SpringMVC中Request的流只能读取一次,所以如果有场景是需要aop中检查raw的参数的话,需要重写一个request,把已读取的流复制出来,因为检验过后流已经被读取过,不做处理的话后续Controller再读取就会报错无法读取

PS:
上传文件一般是formdata
选择file类型,并选择文件


其他

collections 可以把请求分组,方便分类使用


还有一些功能如分享导出,导出后的文件可以直接导入到其他伙伴的postman

runner
可以配置一个组或者多个组进行自动调用,设定循环次数,间隔等,是一个简易的自动化测试功能。
可能比不上jmeter等功能全面的应用,但是开发自测或者走流程测试比较方便