postman 设置请求编码_Postman使用
一、Postman的簡單介紹
熟悉HTTP協議,能容易的配置一個簡單的http請求,這里就不介紹了。下面是Postman的主要功能: - 1、支持定義http請求分組 - 2、支持配置不同環境變量 - 3、支持路徑參數、請求頭參數、請求實體參數的錄入 - 4、支持編寫腳本預處理請求(Pre-request Script) - 5、支持編寫腳本斷言響應結果及其他測試(Tests)
二、Postman的變量
1、作用
Postman用于注入請求地址、請求參數、請求實體、請求頭中占位符{{}}中的值。
2、分類
postman的變量配置,變量類型分為一下3種。每一個變量包含key值,初始化值,當前值三個可編輯項。
| 變量類型 | 作用范圍 | 占位符取值優先級 | 腳本編輯 | 導入導出 | | -------- | ---------------- | ---------------- | -------- | -------- | | 普通變量 | 當前單個請求 | 最高 | 支持 | 不支持 | | 環境變量 | 啟用下的所有請求 | 中 | 支持 | 支持 | | 全局變量 | 所有請求 | 最低 | 支持 | 支持 |
3、設置入口
3.1、可視化設置
3.2、編碼設置
見變量操作語法
三、Postman的腳本執行
1、腳本設置入口
1.1、分類
以請求為導線,分為Pre-request Script和Tests。 以請求組合分類為導線,分為collection級別、folder級別和request級別。 以上兩種分類的組合共有6個腳本設置入口。
1.2、設置入口
1.2.1、collection級別
1.2.1、folder級別
1.2.1、request級別
1.3、執行時間
- 1、Pre-request Script在請求前執行
- 2、Tests在響應后執行
- 3、collection級別在folder級別前執行,folder級別在request級別前執行
| 時間線(上先下后順序) | l類別 | | ---------------------- | ------------------------------------ | | 請求接口前 | Pre-request Script(collection級別) | | 請求接口前 | Pre-request Script(folder級別) | | 請求接口前 | Pre-request Script(request級別) | | 請求接口 | | | 請求返回后 | Tests(collection級別) | | 請求返回后 | Tests(folder級別) | | 請求返回后 | Tests(request級別) |
四、Postman腳本常用語法
1、變量操作
| 變量類型 | set值語法 | get值語法 | 清除語法 | | -------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | | 普通變量 | pm.variables.set("key", "value") | pm.variables.get("key") | pm.variables.unset("variable_key") | | 環境變量 | pm.environment.set("key", "value") | pm.environment.get("key") | pm.environment.unset("variable_key") | | 全局變量 | pm.globals.set("key", "value") | pm.globals.get("key") | pm.globals.unset("variable_key") |
2、異步發送非當前請求
異步發送Get請求https://postman-echo.com/get
pm.sendRequest("https://postman-echo.com/get", function (err, response) {console.log(response.json()); });3、響應斷言
3.1、請求結果斷言
根據HTTP狀態碼斷言
pm.test("Status code is 200", function () {pm.response.to.have.status(200); }); pm.test("Successful POST request", function () {pm.expect(pm.response.code).to.be.oneOf([201,202]); });根據響應狀態描述文字斷言
pm.test("Status code name has string", function () {pm.response.to.have.status("Created"); });3.2、文本響應實體斷言
斷言文本響應結果包含某個字符串
pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search"); });斷言文本響應實體匹配字符串
pm.test("Body is correct", function () {pm.response.to.have.body("response_body_string"); });3.3、JSON響應實體斷言
pm.test("Your test name", function () {var jsonData = pm.response.json();pm.expect(jsonData.value).to.eql(100); });3.4、響應頭斷言
pm.test("Content-Type is present", function () {pm.response.to.have.header("Content-Type"); });3.5、響應耗時斷言
pm.test("Response time is less than 200ms", function () {pm.expect(pm.response.responseTime).to.be.below(200); });4、響應實體由XML轉JSON
var jsonObject = xml2Json(responseBody);5、自定義JSON校驗規則
var schema = {"items": {"type": "boolean"} };var data1 = [true, false]; var data2 = [true, 123];pm.test('Schema is valid', function() {pm.expect(tv4.validate(data1, schema)).to.be.true;pm.expect(tv4.validate(data2, schema)).to.be.true; });6、參考文檔
Postman Sandbox API reference
五、使用舉例
1、問題場景
公司軟件項目作前后端分離,有獨立的后臺接口。后臺接口開發過程避免不了接口測試。 由于安全性設計,請求接口需要進行參數簽名。公司內部已提供簡單的客戶端工具,封裝了簽名過程,調用接口主要寫接口地址、接口方法名、業務參數三中數據。但還存以下問題: 客戶端工具不能記錄歷史請求,復用歷史請求
2、面臨問題
如果切換到Postman作為接口調用工具,需要具備以下條件: - a、登錄請求后,需要記住Token - b、所有業務接口,需要自動帶上Token - c、對請求參數加工,附加上系統參數 - d、對請求參數進行簽名(這里使用MD5)
如果Postman允許,具備以下條件更好: - e、支持一處編寫腳本進行參數處理,每處復用
3、解決方法
| 問題序號 | 解決方法 | | -------- | :----------------------------------------------------------- | | a | 編寫Tests腳本,存儲Token到環境變量 | | b | 使用Postman請求參數占位符功能,請求前自動從環境變量獲取并注入 | | c | 同問題b的解決方法 | | d | 編寫Pre-request Script腳本,進行參數簽名。MD5使用到內置函數CryptoJS.MD5() | | e | 基于JavaScript的封裝,提供通用JS腳本作為一個collection級別的變量,在不同的請求的Pre-request Script腳本中使用eval函數進行引入 |
4、關鍵圖示
總結
以上是生活随笔為你收集整理的postman 设置请求编码_Postman使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于sklearn的朴素贝叶斯_朴素贝叶
- 下一篇: flstudio插件找不到_Eclips