大家好,我是IT修真院武汉分院第10期学员余佳贝,一枚正直善良的web程序员。
今天给大家分享一下,修真院官网js任务6,深度思考中的知识点——如何使用postman测试接口?
一.背景介绍
当开发人员需要调试一个网页是否运行正常,并不是简简单单地调试网页的HTML、CSS、脚本等信息是否运行正常,更加重要的是网页能够正确是处理各种HTTP请求,毕竟网页的HTTP请求是网站与用户之间进行交互的非常重要的一种方式,在动态网站中,用户的大部分数据都需要通过HTTP请求来与服务器进行交互。Postman插件就充当着这种交互方式的“桥梁”。
二.知识剖析
Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试。
-它能够发送任何类型的HTTP requests (GET, HEAD, POST, PUT..),附带任何数量的参数+ headers;
-支持不同的认证机制(basic, digest, OAuth),接收到的响应语法高亮(HTML,JSON或XML);
-Postman 能够保留了历史的请求,这样我们就可以很容易地重新发送请求,有一个“集合”功能,用于存储所有请求相同的API/域。
1、Collections:在Postman中,Collection类似文件夹,可以把同一个项目的请求放在一个Collection里方便管理和分享,Collection里面也可以再建文件夹。如果做API文档的话,可以每个API对应一条请求,如果要把各种输入都测到的话,就需要每条测试一条请求了。这里我新建了一个example用于介绍整个流程,五个API对应五条请求。这个Collection可以通过https://www.getpostman.com/collections/c8f98a1120357e0d4a5a导入你自己的Postman中。
2、上面的黑字注册是请求的名字,如果有Request description的话会显示在这下面。下面的蓝字是保存起来的请求结果,点击可以载入某次请求的参数和返回值。我会用这个功能给做客户端的同事展示不同情况下的各种返回值。保存请求的按钮
3、选择HTTP Method的地方,各种常见的不常见的非常全。
4、请求URL,两层大括号表示这是一个环境变量,可以在16的位置选择当前的environment,环境变量就会被替换成该environment里variable的值。
5、点击可以设置URL参数的key和value
6、点击发送请求
7、点击保存请求到Collection,如果要另存为的话,可以点击右边的下箭头
8、设置鉴权参数,可以用OAuth之类的
9、自定义HTTP Header,有些因为Chrome愿意不能自定义的需要另外装一个插件Interceptor,在16上面一行的卫星那里
10、设置Request body,13那里显示的就是body的内容
11、在发起请求之前执行的脚本,例如request body里的那两个random变量,就是每次请求之前临时生成的。
12、在收到response之后执行的测试,测试的结果会显示在17的位置
13、有四种形式可以选择,form-data主要用于上传文件。x-www-form-urlencoded是表单常用的格式。raw可以用来上传JSON数据
14、返回数据的格式,Pretty可以看到格式化后的JSON,Raw就是未经处理的数据,Preview可以预览HTML页面
15、点击这里把请求保存到2的位置
16、设置environment variables和global variables,点击右边的x可以快速查看当前的变量。
17、测试执行的结果,一共几个测试,通过几个
三.常见问题
1.如何使用postman测试接口
四.解决方案
安装-注册-填入url地址及请求参数
五.编码实战
六.扩展思考
1.怎么设置环境变量
点击右上角齿轮,点击“Manage Environments”调出配置面板
点击面板中的“Add”
在面板中填写这个环境的名称,及参数的键值对。
七.参考链接
https://www.jianshu.com/p/8b910ec0976e
八.更多讨论
1.怎么获取cookie?
postman有一个chrome插件 Postman Interceptor,可以让postman中发送请求的时候使用这个网站的浏览器cookie。
2.为什么有的时候会显示403错误
如果你的参数写在URL上这是get方式 不是post,post是需要在Header下面写参数的
3.在postman测试可以得到同一个session,浏览器上却不可以?
没办法解决。 不同浏览器之间的session是不能共享的,session是跟用户相关的,每个人在同一台机上打开两个浏览器,即使地址一样也是两个sessionid,绝对不会相同,除非是在当前窗口链接的,这样会认为是同一个会话。