設想以下的一個業務場景,服務器端中有一個登陸接口,使用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的接口,優化開發體驗 :)