postman 自動添加cookie

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

相關文章
相關標籤/搜索