(九)通过逻辑处理器串联请求/遍历list结果/foreach控制器

需求:有一个用户列表接口和一个用户详情接口,现需要根据用户列表接口遍历每一个用户的详情

  • 接口
/**
 * @author futao
 * @since 2022/11/7
 */
@RestController
@RequestMapping("in-series")
public class InSeriesController {
    
    
    private static final JSONArray DATAS = new JSONArray();

    static {
    
    
        for (int i = 0; i < 20; i++) {
    
    
            DATAS.add(new JSONObject().fluentPut("id", i).fluentPut("username", "用户-" + i).fluentPut("age", i + 20));
        }
    }

    @GetMapping("/users")
    public JSONObject list() {
    
    
        return new JSONObject().fluentPut("code", 0).fluentPut("data", DATAS);
    }


    @GetMapping("/user/{id}")
    public Object detail(@PathVariable("id") String userId) {
    
    
        for (Object data : DATAS) {
    
    
            if (Objects.equals(((JSONObject) data).get("id"), userId)) {
    
    
                return data;
            }
        }
        return null;
    }
}
  1. 创建线程组
    在这里插入图片描述

  2. 设置http请求默认值
    在这里插入图片描述

  3. 添加用户列表的HTTP取样器
    在这里插入图片描述

  4. 查看结果树,查看请求结果
    在这里插入图片描述

  5. 为了提取响应结果中所有的id,我们可以先通过JSON Path Tester测试我们的表达式

    1. $.data[x].id:取data数组中索引为x的对象的id的属性值
    2. $.data[x:y].id:取data数组中索引为[x,y)的对象的id的属性值数组
    3. $.data[*].id:取data数组中所有对象的id的属性值数组
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  6. 测试成功之后,新建后置处理器,JSON提取器
    在这里插入图片描述

  7. 为了便于观测每个步骤的结果,我们可以添加一个调试取样器
    在这里插入图片描述

  8. 再次发起请求,可以在查看结果树-> 调试取样器中查看debug数据
    在这里插入图片描述

  9. 遍历所有的id,并通过id查询每个用户的详情
    在这里插入图片描述
    在这里插入图片描述

  10. 在Foreach控制器下新建取样器
    在这里插入图片描述

  11. 现在进行测试,即可查看到结果
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/futao__/article/details/127737252