设想以下的一个业务场景,服务器端中有一个登陆接口,使用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的接口,优化开发体验 :)