设想以下的一个业务场景,服务器端中有一个登陆接口,使用session将用户登陆信息存储,方便后续操做,所以实现与用户相关的操做接口无需输入任何用户信息,只需服务器端从session中读取预存的用户身份信息便可。node
这应该是最多见的一种用户身份系统了,session库为了实现这一功能,登陆接口的响应头会有一个key为Set-Cookie的键值对,这里以nodejs的express-session为例,程序员

咱们只需将这个cookie值放入请求体响应头中名为Cookie键值对便可,如:express

如何实现这一功能呢?这里postman对于这种情景的支持很是优秀,会将该属性自动添加,即咱们只需调用登陆接口便可,postman会自动帮咱们将Cookie设置到请求头里。所以咱们访问须要用到session的接口时只需先调用一次登陆接口。json
可是设想一下,如今后端基本都是热更新框架,每次热更新都会清除session,边开发边测试时,每次热更新后,都要先访问一下登陆接口,再访问其余接口,有点繁琐。虽然能够用,可是身为程序员就要善于减轻开发负担。所以,研究了一下postman,发现能够写一个全局脚本,每次使用接口前,先登陆一次,将cookie存入请求头,这样咱们能够直接调用使用session的接口了。后端
1.进入全局脚本编写页面服务器

2.写Pre-request 脚本,这个脚本会在每次请求触发前使用cookie

3. 脚本内容session

脚本中使用了环境变量,至于环境变量怎么设置能够参考个人上一篇博客,不想使用环境变量直接写入完整的url便可。 以前觉得脚本中须要手动设置cookie,所以写上了手动设置cookie的代码,可是没想到登陆请求发送后,自动将Cookie设置了,后来想一想也对,毕竟postman界面底层调用的应该也是这个pm.sendRequest,估计就是这个方法里实现的自动设置。app
附上上述代码的文字版,涉及到隐私的地方作了通用化处理框架
let base_url = pm.environment.get("base_url"); //获取环境变量
const postRequest={
url: `${base_url}/login`,
method: 'POST',
header: {'Content-Type': 'application/json'},
body: {
mode:'raw',
raw: JSON.stringify({"userName": "root","password": "123456"})
}
};//const Header = require('postman-collection').Header;
pm.sendRequest(postRequest, (error, res) =>{//postman会自动将cookie加入request的header中,若是您须要手动添加其余header选项,能够用下面的代码手动添加
//const cookie = res.headers.get("Set-Cookie");
//pm.request.addHeader(Header.create(cookie,"Cookie"));
});
设置完后,不管如何重启服务器, 均可以直接调用须要用session的接口,优化开发体验 :)
本文介绍了一个业务场景,服务器通过Set-Cookie在登录接口响应中创建session。通常,开发者需要手动将cookie添加到请求头。然而,Postman会自动处理这一过程,只需调用登录接口,Postman会保存并应用Cookie。为了简化热更新后的测试流程,作者发现可以通过编写全局Pre-request脚本来自动执行登录,从而避免每次都需要手动调用登录接口。这样可以提高开发效率,并提供了一个实现此功能的Postman脚本示例。
969

被折叠的 条评论
为什么被折叠?



