postman 自動添加cookie


設想如下的一個業務場景,服務器端中有一個登錄接口,使用session將用戶登錄信息存儲,方便后續操作,因此實現與用戶相關的操作接口無需輸入任何用戶信息,只需服務器端從session中讀取預存的用戶身份信息即可。

這應該是最常見的一種用戶身份系統了,session庫為了實現這一功能,登錄接口的響應頭會有一個key為Set-Cookie的鍵值對,這里以nodejs的express-session為例,

 

 

 

 

 

 

 

 

 

 我們只需將這個cookie值放入請求體響應頭中名為Cookie鍵值對即可,如:

 

 

 

如何實現這一功能呢?這里postman對於這種情景的支持非常優秀,會將該屬性自動添加,即我們只需調用登錄接口即可,postman會自動幫我們將Cookie設置到請求頭里。因此我們訪問需要用到session的接口時只需先調用一次登錄接口。

 

但是設想一下,現在后端基本都是熱更新框架,每次熱更新都會清除session,邊開發邊測試時,每次熱更新后,都要先訪問一下登錄接口,再訪問其他接口,有點繁瑣。雖然可以用,但是身為程序員就要善於減輕開發負擔。因此,研究了一下postman,發現可以寫一個全局腳本,每次使用接口前,先登錄一次,將cookie存入請求頭,這樣我們可以直接調用使用session的接口了。

 

1.進入全局腳本編寫頁面

 

 

 

2.寫Pre-request 腳本,這個腳本會在每次請求觸發前使用

 

 

 

3. 腳本內容

 

腳本中使用了環境變量,至於環境變量怎么設置可以參考我的上一篇博客,不想使用環境變量直接寫入完整的url即可。 之前以為腳本中需要手動設置cookie,因此寫上了手動設置cookie的代碼,但是沒想到登錄請求發送后,自動將Cookie設置了,后來想想也對,畢竟postman界面底層調用的應該也是這個pm.sendRequest,估計就是這個方法里實現的自動設置。

 

 

附上上述代碼的文字版,涉及到隱私的地方做了通用化處理

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的接口,優化開發體驗 :)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM