前言
在日常工作中,我們會經常使用到postman,但是大多數情況下都只是,輸入路徑和入參,看能否調通,或是看結果是否符合預期。
但是,這只是postman最基本最基本的功能。
現在我遇到了一種需求:假設一個方法的入參需要其他方法的出參,此時你會怎麼做?最容易想到的就是先調用那個方法獲取結果,再複製到這個入參裏。
可是如果一個參數有五個入參,分別需要填入另外五個方法的結果,此時你還要一個一個的運行,然後複製過來嗎?如果參數不止5個呢?
下面我們就來看一下怎麼用postman優雅的解決這種問題
1、變量
個人感覺postman的函數寫法是和js比較像的。
首先調出postman的控制檯:
然後 寫一個變量,並打印吧
//聲明參數 入參
data = "test"
console.log(data)
調用這個方法的時候就會打印出來
2、系統變量
postman中也可以設置環境變量的,設置了之後就可以在別的地方調用到,具體寫法如下:
pm.environment.set("param", data)
3、兩個簡單方法
這裏模擬了兩個方法來演示我上面提到的問題。
第一個方法,給入參拼接了一個後綴
@GetMapping("/first")
@ResponseBody
public ResponseEntity<String> firstFunction(@RequestParam String param){
return res(param + "-init");
}
第二個方法,給入參加了一個前綴
@GetMapping("/second")
@ResponseBody
public ResponseEntity<String> secondFunction(@RequestParam String param){
return res("加工後的隨機數:" + param);
}
4、關聯兩個方法
下面我要做的就是讓第一個方法的結果,作爲第二個方法的入參。一個postman請求完成。
先看結果,前綴後綴都有的:
下面簡單分析一下:
相信你也注意到了圈紅的地方,這裏就是使用的上面提到的環境變量,第一個方法執行完之後,將結果保存在postman的環境變量中,然後第二個方法執行的時候從postman的環境變量中取出來就行了。
上面這張圖是本章的重點了!
第2行,聲明變量
第6行則是拼出了第一個方法的請求格式
第7行,拼接url時使用了上面聲明的變量(當然此處也可以不使用變量,直接寫死,但是有時候變量多,且使用的地方較多的時候,使用變量可以統一管理)
第12行對一個方法發出請求,得到請求結果
第17行,將請求結果轉成json對象
第20行將第一個方法的請求結果寫入到環境變量
然後我們再來看請求參數,就是上面方法寫入到環境變量的值:
5、總結
很多時候我們只是用到一些工具極少的功能,但是不可否認的是,當我們學的越來越多的時候,開發真的變的越來越簡潔優雅。
postman的技巧還有很多,慢慢學!
下面貼一下代碼:
package com.java.example.demo.postman;
import com.alibaba.fastjson.JSONObject;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* postman中常量及函數的使用
*
* 場景:
* secondFunction這個方法需要依賴 firstFunction方法 執行的結果
* 使用一個postman請求解決
*/
@RestController
public class Constant {
@GetMapping("/first")
@ResponseBody
public ResponseEntity<String> firstFunction(@RequestParam String param){
return res(param + "-init");
}
@GetMapping("/second")
@ResponseBody
public ResponseEntity<String> secondFunction(@RequestParam String param){
return res("加工後的隨機數:" + param);
}
private static ResponseEntity<String> res(Object object){
Map<String,Object> map = new HashMap<>();
map.put("res",object);
return jsonResult(JSONObject.toJSONString(map));
}
public static ResponseEntity jsonResult(String result) {
HttpHeaders resHeaders = new HttpHeaders();
resHeaders.set("Content-Type", "application/json;charset=UTF-8");
return new ResponseEntity(result, resHeaders, HttpStatus.OK);
}
}