postman
- 前言
- 1、变量
- 2、系统变量
- 3、两个简单方法
- 4、关联两个方法
- 5、总结
前言
在日常工作中,我们会经常使用到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);
}
}