问题
用postman测试需要登录权限的接口时,会被拦截,解决办法就是每次请求接口前,先执行登录,然后记住cookie或者token,后续请求带着cookie或token再请求,就不会被拦截了。
postman中脚本执行顺序
在postman中,每个请求而言,先执行pre-request script,收到响应后再执行test script 而对于collection中的request而言,先执行collection中pre-request script,然后执行folder中的pre-request script,再执行请求中的pre-request script,收到响应后再一次执行collection、folder、request中的test script。
利用cookie保持登录状态
我的登录是利用cookie实现的,postman会自动记录cookie,先执行登录,后续请求都会带着登录返回的cookie,从而实现正常接口访问。这又涉及的cookie的知识,cookie是区分域、路径、协议的。 脚本如下
let url = pm.collectionVariables.get("common_url");
let postReq = {
"url":`${url}/api/login`,
method: 'POST',
body: {
mode: 'raw',
raw: JSON.stringify({"username":"admin","password":"123456"})
}
}
pm.sendRequest(postReq, function (err, response) {
console.log(response.json());
});
可以看到这里用到了变量common_url,变量也是一个很有用的东西,通常请求一个网站,协议、域名都是一样的,那么可以抽取出来作为一个变量,以后变了请求地址,只改变量就行了,变量分为collection变量、全局变量、变量,有个变量Tab页。
不会用变量不要紧,点击右侧就能知道语法了。
pm.collectionVariables.get("variable_key");
pm.variables.get("variable_key");
pm.globals.get("variable_key");
如果想管理Cookie,在request中点击右侧的Cookies。
如果用token之类的,可以使用Authorization tab的API Key,提供了好几种场景。
总结
其实遇到这种问题,应该能猜到postman这么成熟的工具肯定有解决方案,最重要的是耐心看一下官方文档,常用的工具要多点点、多看看,保持好奇心,就像刚开始入行时一样。
|